监控 MySQL 复制

joh*_*rds 7 mysql monitoring mysql-replication

监视从站以确保它是的最佳实践是什么

a) 仍在运行 b) 作为主站不会太远

我想通过电子邮件提醒它是否落后,很高兴编写一两个脚本来挂钩命令行应用程序。

pQd*_*pQd 8

1

你可以使用 maatkit 的mk-heartbeat

2

你可以看看结果

show slave status;
Run Code Online (Sandbox Code Playgroud)

在 sql slave 上运行,但 Seconds_Behind_Master 有时令人不安地不准确。

3

你可以破解你自己的解决方案,类似于我的 - 我将它用于nagios监控和提供显示“落后于大师的秒数”的穆宁图表。

在主服务器上,我有简单的 cron 作业:

* * * * * root /usr/local/bin/repltest
Run Code Online (Sandbox Code Playgroud)

其中 repltest 是:

#!/bin/bash
start=`date +%s`
d=0
while [ $d -lt 60 ] ; do
        echo "update repl_test set t= NOW(); " |mysql --defaults-file=/etc/mysql/debian.cnf repl_test
        sleep 3
        d=$(( `date +%s` - $start ))
done
Run Code Online (Sandbox Code Playgroud)

在从站上,我监控返回的值:

echo "select UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(t) from repl_test" |  mysql --defaults-file=/etc/mysql/debian.cnf -N repl_test
Run Code Online (Sandbox Code Playgroud)

所有服务器上的本地时间通过 ntp 同步。

repl_test 数据库包含:

CREATE TABLE IF NOT EXISTS `repl_test` (`t` datetime NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `repl_test` (`t`) VALUES(NOW());
Run Code Online (Sandbox Code Playgroud)

如果您运行复制 - 我建议您还设置mk-table-checksum来不时比较您的 sql 服务器的内容。