如何检查两个大表是否相同?

时间:2011-02-07 11:34:15

标签: mysql replication master-slave

我有两台服务器作为主服务器和另一台服务器运行。我想查看天气,两张表都有相同的数据。我如何检查并确认这一点?该表有超过2300万行。

同样作为第一步,我试图跑 CHECKSUM TABLE tbl;

但是我在60秒后收到此错误: ERROR 2013 (HY000): Lost connection to MySQL server during query

请建议。

3 个答案:

答案 0 :(得分:2)

您还可以使用mk-table-checksum,它是Maatkit实用程序的一部分。

http://www.maatkit.org/doc/mk-table-checksum.html

答案 1 :(得分:1)

如果您的表被设置为主服务器和从服务器,那么您不必进行此检查。两者之间的二进制同步可确保它们完全相同。不是吗?

如果你使用的是最新版本的mysql,你还应该看一下表格分区:http://dev.mysql.com/doc/refman/5.1/en/partitioning.html这会加快像校验和这样的大量访问。

答案 2 :(得分:0)

我不知道它是否100%可能实现你想要实现的目标,但至少有一种验证复制状态的方法是实现某种简单的心跳机制,如书中所述{{3} }。

该方法适用于插入表中的时间戳,每20秒验证一次。结合SHOW SLAVE STATUS \G返回的状态报告,您可以获得有关当前状态的准确统计信息。

您可以看到主服务器后面有多少语句,或者复制错误。如果没有错误或待处理的陈述,你应该很好地假设在时间t你的表是同步的。