我用MySQL设置了两个服务器。它使用一个标准的复制设置,只有一个从机,没有循环复制。
有没有一种方法可以用编程的方式告诉从服务器在从二进制日志读取数据方面落后了多少?
如果我运行语句:
SHOW MASTER STATUS;
在主人身上,然后跑
SHOW SLAVE STATUS;
在slave上,我可以比较master status中的Position列和slave status中的Read_master_Log_Pos列,以确定slave后面的距离。
但是,这只在从机从主机正在写入的同一个文件中读取时有效。因此,如果从机仍在读取以前的日志文件,因为它在后面运行,那么在它赶上主机的当前位置之前,我无法确定剩余的数据量。只使用SQL的解决方案是最佳的,但我对其他解决方案持开放态度。希望不需要读取包含日志文件的目录。
最佳答案
我喜欢使用SHOW SLAVE STATUS中的Seconds_behind_master字段来确定主从服务器是否被捕获。作为辅助保护,我还对两台服务器上的特定表(即经常更新的表)进行COUNT(*)查询,然后比较记录计数。
关于mysql - 如何确定日志中还有多少数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4098017/