Мониторинг репликации MySQL и MariaDB в Zabbix: lag, ошибки и состояние реплики
Репликация может выглядеть «живой» только потому, что MySQL отвечает на порт и база принимает запросы. При этом реплика способна отстать на часы или остановить один из потоков после ошибки. Поэтому мониторинг должен отдельно контролировать состояние репликации.
Начните с официального MySQL template
В современных версиях Zabbix есть штатные шаблоны MySQL. Они позволяют собирать большой набор метрик без самодельных cron-скриптов. Для мониторинга создайте отдельного пользователя БД с минимально необходимыми правами и подключите template, соответствующий вашей версии Zabbix.
Что контролировать у реплики
- работает ли replication I/O thread;
- работает ли SQL/apply thread;
- есть ли ошибка репликации;
- какова задержка относительно источника;
- не растёт ли lag длительное время;
- есть ли данные вообще — отсутствие метрики не должно считаться нормой.
Lag не стоит оценивать одним жёстким порогом
Допустимая задержка зависит от нагрузки и назначения реплики. Для аналитической реплики несколько десятков секунд могут быть приемлемы, а для failover-сценария — уже нет. Лучше иметь warning и high thresholds и отдельно alert на устойчивый рост задержки.
Проверяйте именно вашу схему репликации
Названия команд и возвращаемых полей отличаются между версиями MySQL и MariaDB, а также между классической и более современной терминологией source/replica. Не привязывайте template к одному текстовому выводу без необходимости: где возможно, используйте официальный шаблон и структурированные данные.
Отдельный триггер на остановку важнее графика lag
Если один из потоков остановился, значение задержки может перестать обновляться или выглядеть неоднозначно. Поэтому состояние потоков и наличие свежих данных должны иметь отдельные триггеры, а lag — быть дополнительным сигналом.
Не выдавайте лишние права пользователю Zabbix
Мониторинговому аккаунту не нужны права изменения данных. Используйте минимальный набор прав, который требуется официальному template, храните пароль в макросах/секретах и ограничивайте сетевой доступ.
Итог: хороший мониторинг репликации отвечает на три вопроса: реплика вообще работает, она не отстаёт сверх нормы и ошибки не скрылись за зелёным статусом самого MySQL-сервера.