Тематические термины: Zabbix , MariaDB , MySQL .
Мониторинг репликации СУБД MySQL или MariaDB сводится к написанию скрипта получения состояния репликации баз, настройки UserParameter в агенте zabbix на сервере баз данных и добавлении триггера на zabbix-сервере. На сервере СУБД должен быть установлен Zabbix Agent. Данная инструкция написана на примере заббикса версии 3.4, но она подойдет как для более новых версий (4), так и старых (2).
Проверка состояния репликации
Настройка UserParameter
Настройка Zabbix-сервера
Импорт шаблона
Настройка узла
Дополнительная информация
Репликация master — master
Утилита innotop
Читайте также
1. Получение состояния репликации
Состояние репликации можно получить sql-командой:
> show slave statusG;
В ответ мы получим ряд параметров, из которых нам нужны 2:
- Slave_IO_Running — состояние работы получения бинарного лога с сервера Master. Если состояние будет NO, то репликация не работает.
- Slave_SQL_Running — статус выполнения команд из лога на сервере Slave. Если состояние будет NO, то репликация не работает.
На данном этапе мы напишем скрипт, с помощью которого мы будем подключаться к базе и вытаскивать данные параметры состояния репликации.
Для начала, подключаемся к командной оболочке SQL:
mysql -uroot -p
Создаем пользователя, от которого мы будем подключаться к базе и смотреть состояние репликации:
> GRANT REPLICATION CLIENT ON *.* TO ‘replmon’@’localhost’ IDENTIFIED BY ‘repl_password3’;
* данной командой мы создаем пользователя replmon с паролем repl_password3 . У него будут права на получение статуса репликации для СУБД.
Выходим из командной оболочки mysql:
> q
На сервере Slave создаем скрипт для получения статуса репликации:
vi /etc/zabbix/zabbix_agentd.d/repl_mon.sh
* путь до скрипта repl_mon.sh может быть любой. В данном примере мы разместили его в каталог агента заббикс — во-первых, для порядка, во-вторых, не будет проблем с SELinux (если он используется).
Содержимое скрипта:
#!/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
myuser=’replmon’
mypass=’repl_password3′
Slave_IO=`mysql -u${myuser} -p${mypass} —vertical -e «SHOW SLAVE STATUS» | grep «Slave_IO_Running» | cut -d»:» -f2 | tr -d » » 2>&1`
Slave_SQL=`mysql -u${myuser} -p${mypass} —vertical -e «SHOW SLAVE STATUS» | grep «Slave_SQL_Running» | cut -d»:» -f2 | tr -d » » 2>&1`
if [ «$Slave_IO» != «Yes» ]
then
echo «0»
exit 0
fi
if [ «$Slave_SQL» != «Yes» ]
then
echo «0»
exit 0
fi
echo «1»
exit 0
* в данном скрипте мы подключаемся к базе и получаем статус репликации, после — мы парсим значения двух параметров ( Slave_IO_Running и Slave_SQL_Running ). Если значение этих параметров не равно Yes , скрипт вернет 0 , иначе — 1 . В Zabbix мы будем проверять значение и реагировать на значение 0 .
Устанавливаем права на скрипт — разрешаем запуск на выполнение и задаем владельца zabbix:
chmod 770 /etc/zabbix/zabbix_agentd.d/repl_mon.sh
chown zabbix:zabbix /etc/zabbix/zabbix_agentd.d/repl_mon.sh
Можно проверить работу скрипта, запустив его:
/etc/zabbix/zabbix_agentd.d/repl_mon.sh
2. Настройка UserParameter агента Zabbix
На slave сервере открываем настройки zabbix агента:
vi /etc/zabbix/zabbix_agentd.conf
Добавляем строку:
UserParameter=mysql_repl_mon[*],/etc/zabbix/zabbix_agentd.d/repl_mon.sh
* в данном случае, мы создаем в zabbix агенте пользовательский параметр с именем mysql_repl_mon — при его вызове будет запускаться скрипт /etc/zabbix/zabbix_agentd.d/repl_mon.sh , который мы ранее создали.
Перезапускаем агента:
systemctl restart zabbix-agent
Проверяем работу параметра. Для этого с сервера zabbix выполняем команду:
zabbix_get -s 192.168.0.15 -k mysql_repl_mon
* данной командой мы обращаемся к серверу 192.168.0.15 (это должен быть адрес сервера, на котором мы настроили агента и скрипт); mysql_repl_mon — параметр, который мы вызывает.
* если после запуска команды система вернет ошибку Can’t connect to local MySQL server through socket , необходимо проверить, не запущен ли SELinux — если запущен, необходимо его отключить или настроить .
… команда должна вернуть либо 0 (если есть проблемы с репликацией), либо 1.
3. Настройка сервера Zabbix
На сервере Zabbix мы делаем два действия:
- Создаем шаблон для мониторинга репликации.
- Привязываем к хосту шаблон.
Создание шаблона
Скачиваем шаблон mysql_repl_template.xml . Заходим на веб-портал управления сервером мониторинга с правами администратора. Переходим в раздел Настройка — Шаблоны :
Сверху справа кликаем по Импорт :
В открывшемся окне выбираем скачанный шаблон и нажимаем по Импорт :
В шаблонах должен появиться новый с названием «Template MySQL Replication Slave».
Настройка хоста
Переходим в раздел Настройка — Узлы сети :
Находим среди узлов наш сервер MySQL, который будем мониторить и переходим в его настройки.
На вкладке Шаблоны выбираем наш шаблон, который мы загрузили, добавляем его и обновляем настройки хоста:
Готово. При возникновении проблем репликации мы увидим предупреждение «MySQL: Replication Error».
Дополнительные сведения
Мониторинг репликации master — master
При использовании двухсторонней репликации, мы должны мониторить slave на обоих серверах. Для этого настраиваем по шагам мониторинг для каждого из серверов.
innotop
Мониторинг MySQL/MariaDB также можно выполнить с помощью утилиты innotop. Она может показать состояние репликации, общее время работы сервера баз данных, количество подключений и так далее.
Пользоваться утилитой просто. Для начала ее нужно установить.
а) Если используем систему Red Hat / CentOS / Fedora :
yum install innotop
б) Если используем систему Debian / Ubuntu :
apt-get install mysql-client
Пример подключения к базе:
innotop -uroot -ppassword -h 192.168.0.15
* в данном примере мы подключимся к серверу 192.168.0.15 .
Читайте также
Как настроить кластер MariaDB / MySQL