You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Percona Toolkit仅同步不同数据库表的插入数据?

用pt-table-sync实现仅插入式数据同步的方案

需求匹配要点

你需要将test1的courses表仅同步新增插入数据到test2,忽略test1的删除、更新操作,同时保留test2原有数据(比如test2中id=5的行),可以通过pt-table-sync的特定参数组合实现。

同步命令

假设源库test1的连接信息为h=source_host,user=db_user,password=db_pass,目标库test2为h=target_host,user=db_user,password=db_pass,执行以下命令:

pt-table-sync \
  --ignore-deletes \
  --ignore-updates \
  --insert-only \
  h=source_host,D=test1,t=courses \
  h=target_host,D=test2,t=courses \
  --user=db_user --password=db_pass

参数作用解析

  • --ignore-deletes:跳过源库的删除操作,不会删除目标库中已存在的任何数据
  • --ignore-updates:忽略源库的数据更新,不覆盖目标库的现有数据
  • --insert-only:仅执行插入动作,只把源库中目标库没有的新数据添加到目标库
  • 最后两行分别指定源表和目标表的连接与表信息

预验证(可选)

执行同步前可以添加--dry-run参数,查看工具会生成的SQL语句,确认逻辑符合预期后再执行实际同步:

pt-table-sync \
  --ignore-deletes \
  --ignore-updates \
  --insert-only \
  --dry-run \
  h=source_host,D=test1,t=courses \
  h=target_host,D=test2,t=courses \
  --user=db_user --password=db_pass

结果说明

执行后,test2的courses表会保留所有原有数据,同时插入test1中新增的两条数据(由于test2中id=6、7已存在,表的自增主键会自动生成新的id,对应你期望的id=9、10的行)。

内容的提问来源于stack exchange,提问作者Samvel Martirosyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:40:24