来自SHOW SLAVE STATUS的Seconds_Behind_Master被认为是Slave滞后的不可靠度量。 mk-heartbeat经常被提供作为一个可靠的select。
现在mk-heartbeat甚至不需要奴隶运行。
http://www.maatkit.org/doc/mk-heartbeat.html
摘抄:
mk-heartbeat是一个由两部分组成的MySQL和PostgreSQL复制延迟监视系统,不需要从机工作(换句话说,它不依赖于MySQL上的SHOW SLAVE STATUS)。
所以我的理解是,你在Master上创build一个DB /表,运行mk-heartbeat,更新如下:
./mk-heartbeat -D heart --table beat -u heartbeat -p XXXXXXXXX --update -h 192.168.2.80
然后在Slave上,你在master上的DB / table上指向mk-heartbeat(即你在master上做一个GRANT语句来赋予Slave权限),并像下面这样使用–monitor运行:
./mk-heartbeat -D heart --table beat -u heartbeat_slave -p XXXXXXXXX --monitor -h 192.168.2.80
我已经完成了这个工作,甚至在MySQL示例员工薪水表(这创造了奴隶滞后,至less根据不可靠的Seconds_Behind_Master)的2.8M +行更新时,我从来没有看到mk-heartbeat –monitor从:
0s [ 0.00s, 0.00s, 0.00s ]
也许情况是我没有产生足够的延迟,并且根据mk-heartbeat文档,复制事件在不到半秒的时间内传播,我可以预期看到零秒的延迟:
mk-heartbeat有一秒钟的分辨率。 这取决于主服务器和从服务器上的时钟通过NTP密切同步。 – 更新检查发生在秒的边缘,并且 – 监视器检查在几秒之间发生。 只要服务器的时钟没有太多偏斜,并且复制事件在半秒内传播,mk-heartbeat将报告零秒的延迟。
(我的服务器的时钟正在使用NTP并同步。)
但是Seconds_Behind_Master落后了数百秒,所以我认为他们不会在不到半秒的时间内传播,所以我仍然不确定自己是否准确地了解了mk-heartbeat实用程序。
很想听听任何已经部署这个工具来监控他们的MySQL复制的人。
提前致谢。
干杯
你很近,但你的问题是你有两个实例指向主。 你想要的是一个实例每秒更新一次主设备,而第二个实例每秒钟读取一次设备。
另外请注意,它不需要在实际的数据库服务器上运行,它使用常规的mysql客户端连接。 我从我的仙人掌服务器运行我的。 这里是我清理过的/etc/rc.local例子:
/ usr / bin / mk-heartbeat -D maatkit -u maatkit -paardvark --update -h sql-master.fake.net --daemonize / usr / bin / mk-heartbeat -D maatkit -u maatkit -paardvark -h sql-slave.fake.net --monitor --file /tmp/sql-slave.heartbeat --daemonize
这是我在做什么:
mk-heartbeat -D maatkit -u maatkit -p pass --update -h master mk-heartbeat -D maatkit -u maatkit -p pass -h slave --monitor
当我运行上面的输出片段是
1618s [ 53.92s, 10.78s, 3.59s ] 1619s [ 80.90s, 16.18s, 5.39s ] 1620s [ 107.90s, 21.58s, 7.19s ] 1621s [ 134.92s, 26.98s, 8.99s ] 1622s [ 161.95s, 32.39s, 10.80s ] 1623s [ 189.00s, 37.80s, 12.60s ] 1624s [ 216.07s, 43.21s, 14.40s ] 1625s [ 243.15s, 48.63s, 16.21s ]
数字只是慢慢上升。
心跳表是否需要复制到从属设备? 这是我所缺less的吗?