我设置了一个奴隶,并做了一些表校验和,以检查事情是正常的,然后才能让他们生活。
在同步到停止点并与先前存在的从节点进行比较之后,我在从服务器上做了一个原生mysql校验表。
两张表格不同。为了深入研究,我运行pt-table-checksum,它报告了旧的和新的奴隶没有区别,也没有相同的行计数。
为了获得第三种意见,我对PK命令的文件进行了select *,并对输出运行了一个md5sum。两者都很相配。
一个明显的区别是较新的从运行较轻的更新版本(5.5.34 vs 5.5.29);这两个percona构建。
这种版本的差异在引起校验和的差异方面是否有什么可期待的?如果是这样的话,似乎很奇怪,只有两张桌子,有几十张。
发布于 2014-03-14 20:34:34
别担心,你的处境并不是独一无二的。几年前,我在表-校验和上遇到了同样的问题(参见我的Nov 16, 2012 post Maatkit在一个表中显示MySQL复制错误,但不会修复它)。
这里有一些来自校验和表上的MySQL文档的可怕的东西
校验和值取决于表行格式。如果行格式更改,校验和也会更改。例如,VARCHAR的存储格式在MySQL 4.1和5.0之间更改,因此如果将4.1表升级到VARCHAR 5.0,校验和值可能会更改。重要的是,如果两个表的校验和是不同的,那么几乎可以肯定表在某种程度上是不同的。但是,由于校验和表使用的散列函数不能保证不发生冲突,所以两个不相同的表很可能产生相同的校验和。
我在2012年1月之前就提到了这个警告:如何检查mysql中表的一致性
有时,我只是喜欢使用--print选项直接使用mk-table-sync (对不起Percona,我是老式的),并告诉我SQL的不同之处。正如MySQL文档所述,由于VARCHAR对齐或行格式可能存在差异。如果mk-table-sync/pt-table-sync坚持没有更改,那么您可以在99.9 %的时间内信任它。如果您不信任它,mysqldump表并重新加载它。有可能校验和可能不再匹配。
https://dba.stackexchange.com/questions/60979
复制相似问题