查看开源Percona Toolkit ---特别是pt-table-sync实用程序.
它的主要目的是将MySQL表与其副本同步,但由于它的输出是协调两个表之间差异所需的一组MySQL命令,因此它很适合比较两者.
它实际上做了什么有点复杂,它实际上使用不同的方法取决于它可以告诉你的表(索引等),但其中一个基本的想法是它在块上做快速的CRC32校验和索引,如果校验和不匹配,它会更仔细地检查这些记录.请注意,此方法比线性地遍历两个索引并比较它们要快得多.
不过,它只能让你成为一部分.由于生成的命令旨在将副本与其主副本同步,因此它们只是为所有不同的记录替换副本的当前内容.换句话说,生成的命令会修改all记录中的字段(而不仅仅是已更改的字段).因此,一旦您使用pt-table-sync查找差异,您需要将结果包装在某些内容中,以通过比较记录中的每个字段来检查不同的记录.
但是pt-table-sync你已经知道的是困难的部分:检测差异,真的很快.它是用Perl编写的; 来源应提供良好的面包屑.