MySQL — одна из самых популярных и часто используемых систем управления базами данных для веб-приложений. Он прост в установке, настройке и управлении, что делает его одним из лучших вариантов для новых и опытных пользователей.
Однако иногда сервер MySQL останавливается из-за ошибок или неправильной конфигурации. Это руководство покажет вам, как проверить состояние сервера MySQL и запустить его, если он не работает. Мы реализуем такие концепции, как сценарии systemd, crontab и bash для выполнения таких действий.
Предварительные условия
Прежде чем мы начнем, убедитесь, что у вас есть:
- Установлен и настроен сервер MySQL
- Иметь доступ к root или учетной записи с включенным sudo
Как только у нас будут указанные выше требования, мы можем приступить к работе.
Проверить статус MySQL — Systemd
Первый метод, на котором мы сосредоточимся, прежде чем рассказывать о том, как создать скрипт, — это использовать диспетчер systemd.
Systemd — это мощная система инициализации и диспетчер служб Linux, которая позволяет запускать, останавливать и отслеживать состояния демонов и служб. Кроме того, он предлагает такие функции, как ведение журнала и отслеживание использования и т.д. Таким образом, это обычный инструмент для системных администраторов.
Чтобы использовать systemd для проверки службы MySQL, используйте команду как:
$ sudo systemctl start mysql.service
После того, как вы выполните указанную выше команду, systemd запустит службу, если не возникнет никаких ошибок. Чтобы проверить статус сервиса, используйте команду:
$ sudo systemctl start mysql.service
Это даст вам результат ниже, показывающий, что служба работает.
Проверить статус MySQL — MySQLadmin
Мы также можем использовать такой инструмент, как mysqladmin. Утилита командной строки администрирования сервера MySQL для проверки состояния сервера MySQL.
Используйте команду как:
$ mysqladmin -u root -p status
Если сервер MySQL запущен и работает, вы получите результат, как показано ниже:
Uptime: 35 Threads: 1 Questions: 4 Slow queries: 0 Opens: 103 Flush tables: 3 Open tables: 24 Queries per second avg: 0.114
Bash скрипт
Имея информацию о двух описанных выше методах, мы можем реализовать довольно простой сценарий bash, чтобы проверить, запущена ли служба, и запустить ее, если нет.
Шаг 1. Проверьте, запущена ли служба
Первое, что должен сделать наш сценарий, это проверить, запущена ли служба; мы можем получить это из вывода systemd как:
$ systemctl status mysql.service | grep “active”
Шаг 2: Перенаправить стандартную ошибку на стандартный вывод
После того, как мы получим статус службы с помощью grep, мы можем перенаправить EOF в / dev / null и файловый дескриптор как:
$ systemctl status mysql.service | grep “active” > /dev/null 2>&1
Шаг 3: Получение возвращаемого значения
На следующем шаге мы проверяем возвращаемое значение из приведенной выше команды с помощью символа $?
Как показано:
if [ $? != 0 ]
Шаг 4: Собираем все вместе
Теперь, когда у нас есть все функциональные возможности скрипта, мы можем собрать скрипт как:
#!/bin/bash
systemctl status mysql.service | grep ‘active’ > /dev/null 2>&1
if [ $? != 0 ]
then
systemctl start mysql.service
fi
Теперь сохраните скрипт и сделайте его исполняемым
$ sudo chmod 755 mysql_checker.sh
Шаг 5: Сообщите Cron
И последний шаг, который нам нужно сделать, это сообщить cron о нашем скрипте и автоматически управлять им.
Сделать это можно с помощью команды:
$ sudo crontab -e
Введите следующие строки.
*/5 * * * * /home/ubuntu/mysql_checker.sh
Это позволит cron запускать скрипт каждые 5 минут и запускать службу.
Заключение
В этом руководстве мы использовали systemd для проверки состояния MySQL и его перезапуска. Мы также реализовали сценарий bash и cron, чтобы автоматически обрабатывать проверку и перезапускать процесс.