Я ищу сценарий PHP, который может проверить, работает MySQL или нет в CENTOS / Linux VPS
?
Я пробовал несколько методов, но это не работает
Первый метод:
<?
$command = ('/etc/init.d/mysql restart');
if (! $dbh = mysql_connect('localhost','username','password') ){
$output = shell_exec($command);
echo "<pre>$output</pre>";
}
else
echo"nothing happened";
?>
Второй метод:
<?php
// STOP + START = RESTART..
system('net stop "MySQL"'); /* STOP */
system('net start "MySQL"'); /* START */
?>
Оба метода не работают для меня в PHP ..
Проблема в том, что в наши дни мой сайт слишком загружен mysql, я пробовал несколько методов, но я не могу остановить его сбой.
поэтому я решил сделать скрипт PHP, чтобы проверить, работает ли mysql или нет?
Если нет, то PHP-скрипт выполнит Restart Mysql,
или напечатайте «Мой Sql работает».
Для этого я решил установить Cron Job в PHP, чтобы PHP-скрипт отслеживал, работает mysql или нет.
Я также ищу, чтобы сохранить журналы в конце .. чтобы проверить, сколько раз MySQL получил перезапуск …..
пожалуйста, кто-нибудь найдет решение этой проблемы .. и опубликуйте здесь ..
заранее спасибо…
Вы можете добиться этого простым скриптом bash. Расписание ниже сценария в cron каждые 5 минут или согласно вашему требованию.
#!/bin/bash
[email protected]
date > /var/log/server_check.log
mysql -uroot -proot123 -e"SELECT USER FROM mysql.user LIMIT 1" >> /var/log/server_check.log 2>&1
if [ $? -eq 0 ]
then
echo -e "Hi,\\n\\nMy DB is running \\nThanks,\\nDatabase Admin" | mail -s "My DB is running" $EMAILID
exit
else
echo -e "Hi,\\n\\nMy DB is not running, so now starting it.\\nThanks,\\nDatabase Admin" | mail -s "My DB is not running" $EMAILID
service mysqld start
fi
Кроме того, это всего лишь проверка, но не решение, вы должны проверять свои запросы в медленных журналах или в своей конфигурации базы данных, чтобы выяснить причину и поработать над ней.
Прежде всего, разрешение MySQL выполнять команды оболочки или исполняемые программы вызывает катастрофу безопасности.
Во-вторых, если ваш сайт зависает из-за слишком большой нагрузки на MySQL, перезапуск MySQL из PHP вызывает катастрофу потери данных. Потратьте некоторое время на настройку производительности вашей базы данных. В интернете довольно мало информации об этом.
Вы можете настроить свой сервер (предполагая, что вы управляете сервером и не используете виртуальный хостинг), чтобы разрешить доступ только для чтения (!) К файлу .pid, который присутствует во время работы MySQL, как предложено @ user1420752. Вы можете проверить, что он существует, чтобы увидеть, работает ли MySQL. Это не гарантирует, что это вообще отзывчиво, все же.
Кроме того, вы можете выполнить почти самый дешевый из всех запросов MySQL
SELECT 1
он будет работать только в том случае, если MySQL включен, но не требует ввода-вывода (видеть это).
Существует немало решений для мониторинга операционных систем (Windows / Linux) и вашей базы данных. Некоторые хорошие с открытым исходным кодом. Я бы предложил настроить его так, чтобы он уведомлял вас, когда загрузка ЦП или ввода-вывода высока, или если сервер MySQL останавливается, и сосредоточил ваши усилия на настройке MySQL.
Если ваша служба mysql заблокирована или остановлена, используйте следующий сценарий оболочки для автоматического запуска службы MySql.
#!/bin/bash
now=$(date +"%T")
echo "in $(pgrep mysqld | wc -l) auto mysql start $now"if [[ $(pgrep mysqld | wc -l) == 0 ]];
then
sudo -i | /etc/init.d/mysqld start
fi
Установите скрипт Shell в задании Cron:
*/2 * * * * /bin/sh /home/auto_start_mysql.sh >> /home/cronlog.txt
Для более подробной информации проверьте этот URL: http://www.easycodingclub.com/check-mysql-running-or-not-using-shell-script-or-php-script/linux-centos/
Платформа / версия зависит, но как насчет:
$mysqlIsRunning = file_exists("/var/run/mariadb/mariadb.pid");