暂无图片
pt-table-sync,如果主库3条数据,从库2条,那么generalog怎么显示再主库上replace呢?
我来答
分享
暂无图片 匿名用户
pt-table-sync,如果主库3条数据,从库2条,那么generalog怎么显示再主库上replace呢?

pt-table-sync,如果主库3条数据,从库2条,那么generalog怎么显示再主库上replace呢?


不应该是再从库上insert吗?


pt-table-sync 是再主库还是从库上修复不同的数据的呢?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
yBmZlQzJ

一般情况下,如果主库上有 3 条数据,从库上有 2 条数据,pt-table-sync 会在从库上执行 insert 操作,将从库上缺少的 1 条数据插入。这是因为,在大多数情况下,我们希望从库上的数据始终与主库上的数据保持一致,因此应该在从库上执行 insert 操作。


但是,如果你的修复策略配置为 "replace",那么 pt-table-sync 会在主库上执行 replace 操作,将主库上多余的 1 条数据替换为从库上的数据。这是因为,在某些情况下,我们可能希望主库上的数据始终是最新的,因此应该在主库上执行 replace 操作。


因此,pt-table-sync 的修复策略取决于你的配置文件中的规则。一般情况下,我们建议使用 "insert" 策略,因为它更安全,可以保证数据的一致性。但是,在某些特殊情况下,"replace" 策略可能更适合。

暂无图片 评论
暂无图片 有用 2
Mjwlan

如果使用 pt-table-sync 工具进行主从库数据同步时,在主库上的 general_log 中将显示 REPLACE 操作,而不是 INSERT

pt-table-sync 工具通过比较主库和从库之间的数据差异,并生成同步语句来修复不同的数据。当从库缺少某些行时,pt-table-sync 将在主库上执行 REPLACE 操作,将缺失的行插入到从库中。这是因为 REPLACE 语句在插入数据时会检查主键或唯一索引冲突,并在出现冲突时更新已有记录或插入新记录。这样可以确保从库中的数据与主库保持一致。

正常情况下,在主库上执行 REPLACE 操作会产生相应的二进制日志(binlog),然后从库会解析这些日志并执行相应的操作以保持数据同步。

因此,通过 pt-table-sync 工具修复数据时,它会在主库上执行 REPLACE 操作,并使用主库的二进制日志来同步更新到从库。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏