2014-09-03 48 views
1

我想在我的mysql slave完成复制后自动生成一些报告。我研究过这一点,我相当肯定的一个方法是让侦听器轮询SQL_Delay参数并等待NOT NULL,然后是NULL。我的理解是,当它不是NULL时,它是一个倒计时到复制的计时器,因为它已经检测到来自主服务器的更改,一旦它又变回到空,我就可以运行报告。启动MySQL复制脚本 - 检测完成的复制

这对我来说似乎是完全愚蠢的,有没有更好的方法呢?

+1

现在无权访问复制设置,但其中一个'show slave status'变量具有主站和从站日志位置。如果他们是平等的,那么复制已经赶上了。不过,你必须保持轮询来检查这些值。 – 2014-09-03 14:55:54

+0

@MarcB如果没有访问复制设置,您是否可以确认我需要的变量是EXEC_Master_log_Pos和Read_Master_log_Pos? – 2014-09-03 15:03:54

+1

不是手。它是“master_Log_pos”和“slave_log_pos”或类似的东西。还有一个“seconds_behind_master”或类似的。随着复制接近完成,它也会减少到零,但它总是会悬停在一个非零的位置,因为根据定义,从属总是稍微落后于主。 – 2014-09-03 15:07:40

回答

0

感谢Marc B在原始问题的评论中,他让我走上了正轨。这个解决方案的答案是周期性地查询从站状态,以及主站和从站日志位置是否相同时,您可以轻松完成。这适用于我每5分钟复制一次的情况,如果您持续复制,则可能会有所不同。