帮我理解mk-heartbeat

来自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的吗?