第一步是检查和差并记录到percona.checksum表中。
pt-table-checksum h=xx,P=xx,u=xx,p=xx method=dsn=h=xx,D=xx,t=xx --databases=kobe第二步是将修复SQL打印到文件中。
pt-table-sync --print --sync-to-master h=xx,P=xx,u=xx,p=xx >repair.sql我需要将这个repairsql文件带给开发人员,向他们展示有多少记录是不同的,不同的细节,并让他们确定。我将执行修复sql。
所以我的问题是,我执行这个旧的修复SQL,新的数据正在插入,新的差异正在创建,也许这个旧的修复SQL将涵盖最新的数据!
有人能帮我吗?谢谢!
发布于 2019-09-12 21:01:29
这种技术的问题是数据库仍然是活的,使它成为一个移动的目标。
从针对活动DB的--print选项生成的SQL更多地是为您提供要执行的SQL的预览,而不是使用SQL脚本。
由于有实时写操作,您必须在以下两种方法之间作出决定:
如果您选择在应用程序上执行修复,下面是您的步骤
--print到repair.sql执行pt表同步--execute选项执行pt-table-sync选项--print到repair_after.sql执行pt表同步--print到repair.sql执行pt表同步--execute选项执行pt-table-sync选项--print到repair_after.sql执行pt表同步对于APPROACH #2,如果一切顺利,repair_after.sql应该是空的。
对于APPROACH #1,您必须重复您的步骤,直到repair_after.sql尽可能接近空为止。
您应该在暂存服务器上测试这些方法。
您应该始终备份数据库。
https://dba.stackexchange.com/questions/152548
复制相似问题