首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保pt同步表数据是最新的?

如何确保pt同步表数据是最新的?
EN

Database Administration用户
提问于 2016-10-18 02:26:55
回答 1查看 1K关注 0票数 0

第一步是检查和差并记录到percona.checksum表中。

代码语言:javascript
复制
pt-table-checksum h=xx,P=xx,u=xx,p=xx method=dsn=h=xx,D=xx,t=xx --databases=kobe

第二步是将修复SQL打印到文件中。

代码语言:javascript
复制
pt-table-sync --print --sync-to-master h=xx,P=xx,u=xx,p=xx >repair.sql

我需要将这个repairsql文件带给开发人员,向他们展示有多少记录是不同的,不同的细节,并让他们确定。我将执行修复sql。

所以我的问题是,我执行这个旧的修复SQL,新的数据正在插入,新的差异正在创建,也许这个旧的修复SQL将涵盖最新的数据!

有人能帮我吗?谢谢!

EN

回答 1

Database Administration用户

发布于 2019-09-12 21:01:29

这种技术的问题是数据库仍然是活的,使它成为一个移动的目标。

从针对活动DB的--print选项生成的SQL更多地是为您提供要执行的SQL的预览,而不是使用SQL脚本。

由于有实时写操作,您必须在以下两种方法之间作出决定:

方法#1 :先开枪后提问,

如果您选择在应用程序上执行修复,下面是您的步骤

  • --print到repair.sql执行pt表同步
  • 检查repair.sql并证明这些更改是您所期望的
  • 检查你的血压;让你的药物待命。
  • 使用--execute选项执行pt-table-sync选项
  • --print到repair_after.sql执行pt表同步

方法2:应用程序停机时间

  • --print到repair.sql执行pt表同步
  • 检查repair.sql并证明这些更改是您所期望的
  • 检查你的血压;让你的药物待命。
  • 停止应用
  • 使用--execute选项执行pt-table-sync选项
  • --print到repair_after.sql执行pt表同步
  • repair.sql与repair_after.sql的比较
  • 启动应用

尾声

对于APPROACH #2,如果一切顺利,repair_after.sql应该是空的。

对于APPROACH #1,您必须重复您的步骤,直到repair_after.sql尽可能接近空为止。

您应该在暂存服务器上测试这些方法。

您应该始终备份数据库。

试试看!

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/152548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档