Mysql向TiDB迁移的方案讨论

在使用 DM 进行迁移时,以下是写流量的切换建议,请根据实际场景进行评估:

DM + 完全业务双写

该方案是在应用端实现双写,并且在指定时间窗口上线双写功能,运行稳定后,可评估写流量切换到 TiDB。

1)使用 DM 完成业务数据的全量和增量同步
2)寻找时间窗口将线上以及 DM 的流量同时切断,并确认数据是否完全同步
3)应用程序端上线双写功能
4)DM 不再作为增量同步的介质,评估后可计划下线
5)应用端正常写入数据到 MySQL 以及 TiDB
6)评估后,写流量切换至 TiDB

如果采用您之前提供的方案,业务 A 和业务 B 同时使用表 1 ,并且使用 DM 同步表 1 到 TiDB。DM 同步的粒度是 table,此时,切业务 A 到 TiDB,业务 B 会持续写入数据到 MySQL ,并同步到 TiDB。

MySQL 和 TiDB之间的自增 ID存在差异,见下述文档:

https://pingcap.com/docs-cn/stable/reference/mysql-compatibility/#自增-id

有可能会出现主键冲突的报错,处理步骤需要通过修改位点或者删除下游已有数据的方式来跳过,可能存在数据不一致的风险。

2 个赞