pg 迁移tidb,要持续增量迁移的,有什么好的工具

背景:
有个需求,要将pg的数据迁移到tidb,要持续增量复制,有什么好的工具吗,最近测了ninedata 还可以,但是有些限制,请大家帮忙推荐下
备注:seatunel 有bug,实现不了增量迁移,datax 也不支持增量迁移

2 个赞

可以试试TiDB自带的DM(Data Migration),虽然主打MySQL,但2.0+版本已支持PostgreSQL作为上游源,支持全量+增量同步。配置上需要开启wal_level=logical,并创建复制账号。如果PG版本较旧(<9.4),DM兼容性会打折扣。

另外,Debezium+Kafka是通用方案,用PG的wal2json或decoderbufs插件捕获变更,再通过TiDB的Kafka Connector写入。链路稍长,但灵活可控。

1 个赞

可以试试TiDB自带的DM(Data Migration),虽然主打MySQL,但2.0+版本已支持PostgreSQL作为上游源,支持全量+增量同步。配置上需要开启wal_level=logical,并创建复制账号。如果PG版本较旧(<9.4),DM兼容性会打折扣。
这AI 也太不靠谱了

1 个赞

可以咨询下cloudcanal 是否支持,这个很好用

1 个赞

个人觉得异构做迁移的话,对外服务停掉,直接全量迁移最稳妥。
增量同步可以尝试用Kettle建立任务,做好映射(做过TiDB到MySQL的增量没问题,PG和TiDB没测过)

这样比较稳妥

这个我测过,不支持pg-tidb

tidb-mysql 直接用cdc 更好

只是简单测试,并不做同步。而且CDC比Kettle部署比较复杂,只是做增量迁移,能实现的话没必要复杂化。

1 个赞

Flink CDC(pg-cdc source → TiDB sink)—— 目前最推荐

  • 一站式:全量快照 + 增量实时同步在同一个 pipeline 里完成,不用先跑 DataX 全量再另起增量;
  • 底层用 PostgreSQL 的逻辑复制(pgoutput),不需要第三方解析工具,稳定;
  • 从 PG 10+ 都支持,字段类型映射(jsonb、array、uuid 等)社区已经比较完善;
  • 你们已经接触过 SeaTunnel,Flink CDC 的增量稳定性和社区活跃度明显更好。
1 个赞

1. CloudCanal(商业,最省心)
原生支持 PostgreSQL → TiDB 的结构迁移 + 全量 + 增量 + 数据校验 / 订正 + DDL 同步,界面化配置,比 NineData 限制少,国内生产案例多。SaaS 或私有部署都行。

2. Apache Flink CDC(开源首选)

  • 源端 PG:官方支持(走 WAL 逻辑复制),全量 + 增量、Exactly-Once、断点续传,故障不丢数;
  • 目标 TiDB:用 Flink SQL 的 JDBC upsert 写入即可,社区有大量 “PG → TiDB” 亲测方案(亲测可行教程很多);
  • 代价:要自己搭 Flink 集群、写 SQL 任务,运维成本比商业工具高。

3. 云厂商 DTS(如果业务在云上)
阿里云 DTS 支持 PG 源 → TiDB 目标,托管式、免运维,最省心。

4. 备选:Tapdata(商业实时数据平台,PG→TiDB 支持也成熟)。

不推荐自建 Debezium + Kafka:能实现,但要自己写消费端写 TiDB,工作量大,除非有 Kafka 中间处理需求。

三点注意事项(PG 特有的坑)

  1. PG 侧必须开 wal_level=logical 并建复制槽;注意监控复制槽积压,积压会堵 WAL 清理导致磁盘膨胀;
  2. DDL 同步别全信工具:PG 和 TiDB 的 DDL 语义差异大,建议大表 DDL 人工评估后再执行;
  3. 类型映射提前核对:json/jsonb、数组、uuid、枚举、序列等容易出问题;且目标表必须有主键 / 唯一键,否则增量更新不稳。
1 个赞

cloudcanal 源端是pg 对端如果不支持tidb ,可以将tidb创建成mysql数据库,你试试。这样应该是可以的。只要tidb不做源端就行。

1 个赞

这样说不行的,到时候会报错

异构库迁移,增量是个大难题

你可以测试下。只要cc支持pg 到 mysql 你就可以将tidb创建成mysql。使用 mysql的驱动。tidb作为对端。验证下

1 个赞

映像中,官方提供了迁移工具,可以测试下

下游 TiDB 表必须有主键,没主键 upsert 会变 append 写重复。

Ninedata继续研究下,算比较好用

DM 2.0+已支持PG上游,开wal_level=logical即可增量

学习了,我也在做PG迁移tidb的测试,全量迁好弄,增量同步还没试过