在运行mk-table-sync之后,一些表仍然不同步

我有1个主人和2个奴隶。 我在所有服务器上使用MySQL 5.1.42。 我正在尝试使用mk-table-checksum来validation它们的数据是否同步,但是我在其中一个从站上收到意外的结果。

首先,我像这样在master上生成校验和:

mk-table-checksum h=localhost --databases MYDB --tables {$table_list} --replicate=MYDB.mk_checksum --chunk-size=10M

我的理解是,这将运行主机上的校验和查询,然后通过正常的复制传播到奴隶。 所以,不需要locking,因为当他们自己运行校验和查询时,从属将处于相同的逻辑时间点。 它是否正确?

接下来,为了validation校验和是否匹配,我在master上运行:

mk-table-checksum --databases MYDB --replicate=IRC.mk_checksum --replicate-check 1 h=localhost,u=maatkit,p=xxxx

如果有什么不同,我会像这样修复奴隶:

mk-table-sync --execute --verbose --replicate IRC.mk_checksum h=localhost,u=maatkit,p=xxxx

做完所有这些之后,我用mk-table-sync修复了两个奴隶。 然而,每次我运行这个序列(在所有事情都被修复之后),一个从属器件完全同步,但是一个从属器件总是有几个不同步的表格。 我99.999%确定从站上的数据是相匹配的,因为我修复了一切,并且在校验和脚本的运行之间,主站上的表甚至没有更新。 什么会导致几个表总是显示不同步只有一个奴隶? 我被困住了。 这是输出:

 Differences on h=xxxx,p=...,u=maatkit 

DB TBL CHUNK CNT_DIFF CRC_DIFF BOUNDARIES
IRC产品10 0 1 product_id > = 147377 AND product_id <162085
IRC post_order_survey 0 0 1 1 = 1
IRC mk_heartbeat 0 0 1 1 = 1
IRC mailing_list 0 0 1 1 = 1
IRC honey_pot_log 0 0 1 1 = 1
IRC产品12 0 1 product_id > = 176793 AND product_id <191501
IRC产品18 0 1 product_id > = 265041
IRC订单26 0 1 order_id > = 694472
IRC orders_product 6 0 1 op_id > = 935375

–replicate = MYDB.mk_checksum

–replicate = IRC.mk_checksum

为什么区别?

你有没有把这个问题提交给Maatkit邮件列表? 这听起来像是最近的一个线程。 如果不是你,也许你可以劫持那个线程。 (我更喜欢在那里回答,我不跟踪/跟踪/监视这里)。