我已经意识到,我的mysql奴隶之一丢失了行。选择主表上的特定表计数: 9605010,从表: 9593831
从站是完全同步的,没有seconds_behind_master,没有错误,没有慢速日志。
主服务器和从服务器版本: mysql Ver 14.14远端5.6.35-80.0,用于debian gnu (x86_64),使用6.3
sync_binlog=1,基于行的复制
我不确定是否使用pt-table-校验和,因为这是一个prod系统。究竟什么会导致rbr上的数据漂移呢?
发布于 2017-08-09 04:03:45
没有调查是不可能知道的。可能是在创建从服务器时出错,可能是直接写到从服务器,复制中的错误,以及SET binlog=0应用程序中的错误等等。
更糟糕的是,这很难调查后事实。您需要为数据漂移故障排除做准备。
pt-table-checksum将是你的第一步。这是一个成熟的工具,安全的使用,但问题也是可能的。很可能是锁问题死锁。如果需要特别偏执,我将--chunk-time设置为0.1甚至更少。
查找数据中的差异,检查它(您可能希望使用丁丁b_表格_比较查找丢失/额外/不同的行),并修复不匹配(根据数据漂移的大小使用pt-table-sync或重新构建从属程序)。
并将pt-table-checksum放入cron中。如果一次运行需要很长的时间(比如1-2天),我建议拆分发现部分和警报部分(即重型pt-table-checksum填充percona.checksums和一个轻量级脚本检查percona.checksums和如果发现不一致时发出警告)。在我的系统中,我一直在运行pt-table-checksum。
然后,当发现不一致时,检查数据、二进制日志,然后找出它的来源。
https://dba.stackexchange.com/questions/182980
复制相似问题