При использовании MASTER-MASTER репликаций, я регулярно сталкивался с проблемами потери связи и "отставания" одного сервера от другого. Чаще всего это возникает при обрывах связи между ними. MySQL довольно корректно переподключается и восстанавливает репликацию, однако на это может уходить несколько минут. Чтобы быть в курсе и мониторить данные перерывы, был найден плагин check_mysql_replica.
Плагин работает по простой схеме - подключается к каждому из двух серверов и:
- проверяет переменные Slave_IO_Running и Slave_SQL_Running, выдаваемые по запросу show slave status. При запущенной репликации и установленном соединении они должны быть "Yes".
- сравнивает позиции бинарных логов по командам show slave status и show master status на разных серверах. В идеале они должны быть одинаковые, что значит, что оба сервера полностью реплицированы.
Установка и настройка.
Создаем пользователей на обоих mysql, имеющих права на выполнение запросов show slave status и show master status. Для своего я поставил права SUPER, REPLICATION SLAVE, REPLICATION CLIENT.
Качаем и устанавливаем плагин:
cd /usr/local/libexec/nagios/
fetch http://www.mahno.su/wp-content/uploads/2011/03/check_mysql_replica
chmod 755 check_mysql_replica
Редактируем в плагине строки:
SLAVEIP=10.1.1.1
MASTERIP=10.2.2.2
REPLUSERNAME=nagios
REPLPASSWD=nagios</code>
Тут думаю все понятно :)
<code>CRITICAL_VALUE=500
WARNING_VALUE=200
Это разница в позиции бинарных логов. Подбираем под себя опытным путем..
commands.cfg
define command{
command_name check_mysql_replica
command_line $USER1$/check_mysql_replica
}
server.cfg
define service{
use local-service ; Name of service template to use
host_name 10.1.1.1
service_description MySQL Replica
check_command check_mysql_replica
}
Информация черпалась с сайта записки системного администратора Mahn0