一、迁移场景
目标:数据库数据同步到 CKafka。
存量迁移方案:平滑迁移,采用双写到单写的迁移模式。
新增的同步链路请直接参考本文档第四部分。
二、迁移步骤
简述:先双写后单写,完成平滑迁移。具体迁移步骤如下:
1. 双写:先在 DTS 平台建立和 CKafka 连接器功能一样的数据同步任务,都同步到相同的 topic(可以在 CKafka 控制台查询 topic 信息)。
2. 数据库的增量数据会同时经过2个链路写到 CKafka,数据会有少量重复。
3. 单写:DTS 的数据同步任务正常运行后,停止 CKafka 的连接器任务,实现单写。
4. CKafka 控制台停止连接器任务,只用 DTS 的数据同步任务,topic 数据不再重复生产。



风险:topic 数据会有少量重复。
建议:在业务低峰期操作,减少影响。
三、迁移方案
3.1. 方案对比
方案 | 方案1:主动迁移,提前规避风险。 | 方案2:被动迁移,防止二次故障。 |
思路 | 低峰期启动 DTS 数据同步,下线连接器。 | 在连接器故障后,启动 DTS 数据同步任务。 把 DTS 数据同步任务提前建立好,让其处于暂停状态,不启动; 连接器故障或者异常后,再开启 DTS 数据同步任务。 |
优点 | 主动行为,低峰期操作,风险可控。 | 现有任务不动,业务不受影响。 |
缺点 | 导入 CKafka 的数据会有少量重复。 | 故障后的止损预案,时效性低,故障影响面不可控; CKafka 可能缺少故障期间的数据。 |
其他 | - | 回滚方案 双写阶段:如果遇到 DTS 数据同步任务不符合预期,可以直接在 DTS 平台暂停或者删除任务; 单写阶段:如果发现数据不符合预期,可以把连接器再次启动,同时把 DTS 数据同步任务暂停。 兜底预案: DTS 同步数据任务暂停或者删除; CKafka 连接器任务重启。 |
3.2. 注意事项
数据库 mongoDB 只能采用 DTS 自建的 Kafka 集群,有很多限制,业务改造成本高。主要如下:
topic 和消费组不能自定义。
CKafka server 地址需更换。
业务需要改配置,发布上线。
解法:需要向 DTS 提需求单 - mongoDB 支持数据同步到 Kafka 功能。
四、POC 验证
使用数据传输服务 DTS 将 MySQL/MariaDB/Percona/TDSQL-C MySQL 数据同步至腾讯云数据库 CKafka 的过程。
源数据库支持的部署类型如下:
自建 MySQL、第三方云厂商 MySQL、腾讯云数据库 MySQL。
自建 MariaDB、腾讯云数据库 MariaDB。
自建 Percona。
腾讯云数据库 TDSQL-C MySQL。
MongoDB 使用 DTS 数据订阅的方式。
暂时不能同步到 CKafka 实例,可以同步到 DTS 的 Kafka集群。
4.1. MySQL/MariaDB/Percona/TDSQL-C MySQL 连接器迁移 DTS SOP
这几类数据库(MySQL/MariaDB/Percona/TDSQL-C MySQL)操作类似,下面以 MySQL 为例。
步骤1:在 消息队列 CKafka 版控制台单击连接器 > 任务列表并单击需要同步的数据库表和 topic 信息。

步骤2:DTS 平台新建同步任务。
在云数据库 TencentDB 控制台中,单击数据传输服务 > 数据同步 > 新建同步任务。

选择同步的实例类型:选定好源实例类型和目标实例类型。

创建后,在列表中单击配置,然后根据提示配置数据库信息和 Kafka topic 信息。

选择源库实例 ID 和目标库 Kafka 的实例 ID,并按需要配置其他选项。

同步任务校验通过后,可以启动任务。

回到数据同步列表,可以看到任务正常运行。

观察任务状态是否正常。

步骤3:回到 CKafka 控制台,停止连接器任务。

4.2. MongoDB 连接器迁移 DTS SOP
数据传输服务类型选择“数据订阅”,数据库选择 MongoDB。

进入云数据库 TencentDB 控制台,左侧导航栏单击数据订阅并找到列表中的订阅,单击配置订阅。

按提示配置订阅。

在订阅详情中,可以获取到 Kafka 的 订阅 topic 和 内网地址(server 地址)。
