Пример скрипта на Python для мониторинга состояния репликации MariaDB / MySQL

В данном примере рассмотрим простой вариант использования языка программирования Python для подключения к базе данных MariaDB / MySQL и получения от нее состояния репликации. В качестве операционной системы, на которой запустим скрипт, будем использовать Linux.

Для настройки репликации СУБД, можно использовать инструкцию Как настроить кластер MariaDB / MySQL .

Подготовка

В системе должен быть установлен python с поддержкой драйвера mysql. Сам питон ставим одной из команд.

а) На системах RPM (Red Hat, CentOS, Fedora):

yum install python3 python3-pip

б) На системах DEB (Debian, Ubuntu):

apt-get install python3 python3-pip

После установим драйвер PyMySQL для Python:

pip3 install PyMySQL

Подключаемся к СУБД MySQL:

mysql -uroot -p

Теперь создаем пользователя в СУБД, под которым мы будем подключаться к базе данных с целью получения статуса репликации:

> GRANT REPLICATION CLIENT ON *.* TO ‘replmon’@’localhost’ IDENTIFIED BY ‘repl_password3’;

* данной учетной записи мы даем минимальные права, необходимые для просмотра статуса.

Скрипт

Создаем скрипт в любой директории, например:

vi /scripts/mysql_repl_mon.py

Пример скрипта для мониторинга состояния:

  1. #!/usr/bin/env python3
  2. import pymysql
  3. db_host = ‘localhost’
  4. db_user = ‘replmon’
  5. db_password = ‘repl_password3’
  6. connection = pymysql.connect(db_host, db_user, db_password)
  7. cursor = connection.cursor(pymysql.cursors.DictCursor)
  8. cursor.execute(«SHOW SLAVE STATUS»)
  9. rows = cursor.fetchall()
  10. Slave_IO_Running = rows[0][‘Slave_IO_Running’]
  11. Slave_SQL_Running = rows[0][‘Slave_SQL_Running’]
  12. if Slave_IO_Running != «Yes» or Slave_SQL_Running != «Yes»:
  13. print(«0»)
  14. else:
  15. print(«1»)
  16. connection.close()

Даем права скрипту на выполнение:

chmod +x /scripts/mysql_repl_mon.py

Запускаем скрипт для проверки:

/scripts/mysql_repl_mon.py

… если репликация работает корректно, скрипт должен вернуть 1, иначе — 0.

Описание скрипта

1 Шебанг — путь до исполняемого файла интерпретатора
3 Импортируем библиотеку для работы с MySQL
5 — 7 Задаем переменные, которые будем использовать для подключения к СУБД
10 Подключаемся к базе
11 Создаем объект, который делает запросы и получает их результаты в виде списка
12 Выполняем SQL-запрос, который будет возвращать статус репликации баз данных
13 Получаем результат в виде массива и записываем его в переменную rows
15 Значение параметра Slave_IO_Running заносим в одноименную переменную
16 Значение параметра Slave_SQL_Running заносим в одноименную переменную
18 — 21 Проверяем значения переменных. Если одно из них не равно Yes, то возвращаем 0, иначе — 1
23 Закрываем соединение с базой данных

Как применять скрипт

Данный скрипт можно добавить в cron на выполнение с периодичностью раз в 5 минут (или чаще) и дописать на отправку письма администратору, в случае возникновения проблем.

Но лучше всего настроить его в связке с системой мониторинга. Для примера, читайте инструкцию Настройка мониторинга репликации MariaDB/MySQL с помощью Zabbix .

EnglishRussianUkrainian