前言
在主从复制中Checksum常常需要对某些重要的表进行一致性检查。
checksum
Checksum table计算返回值的逻辑大致如下:
ha_checksum crc= 0;foreach(row in table){ row_crc= get_crc(row); crc+= row_crc;}return crc;
可以看到只要总行数以及行内容相同,与读取行的顺序无关。
从这个逻辑还能得到一下几个结论: 1)与使用的引擎无关,也就是说即使主备不用同一个引擎,checksum也可用于检查。虽然InnoDB有隐藏行,但这里无视。
2)与是否有索引无关。row_crc只用行本身的数据来计算,并不包括索引数据。 也就是说如果能够保证两个表里面的数据一样,表结构(列内容和顺序一样),操作系统一样,MySQL版本一致,是能够保证checksum的结果的。