Автоматическое восстановление службы MySQL в Ubuntu: различные методы с примерами кода

Вот скрипт Ubuntu, который будет запускать службу MySQL всякий раз, когда она выходит из строя:

#!/bin/bash
# Check if MySQL service is running
if ! pgrep mysql >/dev/null; then
    # Start MySQL service
    service mysql start
fi

В этом скрипте мы сначала проверяем, запущена ли служба MySQL, с помощью команды pgrep. Если команда не возвращает никаких идентификаторов процессов (что указывает на то, что служба MySQL не запущена), мы запускаем службу MySQL с помощью команды service.

Теперь перейдем к статье в блоге.

В Ubuntu обеспечение постоянной работоспособности критически важных служб, таких как MySQL, имеет решающее значение для бесперебойной работы ваших приложений. В этой статье мы рассмотрим несколько способов автоматического запуска службы MySQL при ее выходе из строя. Мы предоставим примеры кода для каждого метода, чтобы помочь вам реализовать решение, которое лучше всего соответствует вашим потребностям.

Методы:

  1. Метод службы Systemd:

    • Объяснение: Ubuntu использует systemd в качестве системы инициализации, которая обеспечивает надежный механизм управления службами. Мы можем использовать systemd для автоматического перезапуска службы MySQL в случае сбоя.
    • Пример кода:
    # Create a systemd service unit file
    sudo nano /etc/systemd/system/mysql-monitor.service

    Добавьте в файл следующее содержимое:

    [Unit]
    Description=MySQL Monitor Service
    After=network.target
    [Service]
    ExecStart=/bin/bash -c 'until /usr/bin/pgrep mysql; do /usr/sbin/service mysql restart; sleep 10; done'
    [Install]
    WantedBy=default.target

    Сохраните файл и выйдите из текстового редактора. Затем включите и запустите службу:

    sudo systemctl enable mysql-monitor.service
    sudo systemctl start mysql-monitor.service
  2. Метод задания Cron:

    • Объяснение: с помощью задания cron мы можем периодически проверять, запущена ли служба MySQL, и запускать ее при необходимости.
    • Пример кода:
    # Create a cron job to check MySQL service every minute
    crontab -e

    Добавьте следующую строку в файл crontab:

    * * * * * /bin/bash -c 'if ! /usr/bin/pgrep mysql >/dev/null; then /usr/sbin/service mysql start; fi'

    Сохраните файл и выйдите из текстового редактора. Задание cron будет запускаться каждую минуту и ​​запускать службу MySQL, если она еще не запущена.

  3. Инструмент мониторинга Monit:

    • Объяснение: Monit — мощный инструмент мониторинга, который может автоматически перезапускать службы в случае сбоя. Мы можем настроить Monit для мониторинга службы MySQL и принятия соответствующих мер в случае ее выхода из строя.
    • Пример кода:
    # Install Monit
    sudo apt-get install monit
    # Configure Monit to monitor MySQL service
    sudo nano /etc/monit/conf.d/mysql.conf

    Добавьте в файл следующее содержимое:

    check process mysql with pidfile /var/run/mysqld/mysqld.pid
     start program = "/usr/sbin/service mysql start"
     stop program = "/usr/sbin/service mysql stop"
     if failed unixsocket /var/run/mysqld/mysqld.sock then restart

    Сохраните файл и выйдите из текстового редактора. Затем перезапустите Monit:

    sudo service monit restart

Обеспечение постоянной доступности службы MySQL в Ubuntu имеет решающее значение для поддержания стабильности ваших приложений. В этой статье мы рассмотрели три различных метода автоматического запуска службы MySQL при каждом ее выходе из строя. Внедрив один из этих методов, вы сможете сэкономить время и силы, исключив необходимость ручного вмешательства при сбоях обслуживания.