数据同步操作指导

最近更新时间:2024-11-01 10:01:32

我的收藏

操作场景

DTS 支持将源数据库的全量、增量数据同步至 Ckafka 中,方便用户快速获取业务变更数据并进行分析应用。本文为您介绍使用数据传输服务 DTS 将 TDSQL MySQL 数据同步至腾讯云数据库 Ckafka 的过程。

准备工作

1. 请仔细阅读 使用说明,了解功能约束和注意事项。
2. 在源数据库上,对同步任务账号进行授权,参考如下。
GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SHOW VIEW,PROCESS,SELECT ON *.* TO '账号'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO '账号'@'%';
FLUSH PRIVILEGES;
3. 在目标 Ckafka 中修改消息保留时间和消息大小上限,具体方法请参考 配置消息大小
消息保存时间建议设置为3天,超过保存时间的数据会被清除,请用户在设置的时间内及时消费;消息大小上限,即 Ckafka 可以接收的单个消息内存的大小,设置时需要大于源库表中单行数据的最大值,以确保源库的数据都可以正常投递到 CKafka 中。
4. 首次使用消息队列 Ckafka 作为 DTS 同步链路的目标端,需要对目标端所属腾讯云子账号进行如下授权。
4.1 对子账号授权 “QcloudCkafkaReadOnlyAccess(消息队列 CKafka 版(Ckafka)只读访问策略)”,允许 DTS 拉取到 Ckafka 实例列表,具体请参见 授权子账号使用 DTS
4.2 创建 DTS 角色信息,允许 DTS 访问 Ckafka 服务资源,具体请参考 授权 DTS 访问其他云服务资源

操作步骤

1. 登录 数据同步购买页,选择相应配置,单击立即购买
参数
描述
计费模式
支持包年包月和按量计费。
源实例类型
选择 TDSQL MySQL,购买后不可修改。
源实例地域
选择源实例所在地域,购买后不可修改。
目标实例类型
选择 Kafka,购买后不可修改。
目标实例地域
选择目的实例所在地域,购买后不可修改。
规格
请根据业务诉求选择规格,规格越高,性能越好。详情请参考 计费概述
2. 购买完成后,返回 数据同步列表,可看到刚创建的数据同步任务,单击操作列的配置,进入配置同步任务页面。
3. 在配置同步任务页面,配置源端和目标端账号密码,测试连通性后,单击下一步
设置项
参数
描述
任务设置
任务名称
DTS 会自动生成一个任务名称,用户可以根据实际情况进行设置。
运行模式
支持立即执行和定时执行两种模式。
源实例设置
源实例类型
购买时所选择的源实例类型,不可修改。
源实例地域
购买时选择的源实例所在地域,不可修改。
接入类型
请根据您的场景选择,当前仅支持源端为腾讯云数据库。
账号/密码
账号/密码:源数据库的账号、密码。
目标实例设置
目标实例类型
购买时选择的目标实例类型,不可修改。
目标实例地域
购买时选择的目标实例地域,不可修改。
接入类型
根据您的场景选择,本场景选择“Ckafka 实例”。
实例 ID
选择目标实例 ID。
4. 在设置同步选项和同步对象页面,完成同步选项和同步对象的设置后,单击保存并下一步
4.1 数据初始化选项

参数
描述
初始化类型
结构初始化:同步任务执行时会先将源实例中表结构初始化到目标实例中。
全量数据初始化:同步任务执行时会先将源实例中数据初始化到目标实例中。仅选择全量数据初始化的场景,用户需要提前在目标库创建好表结构。
全量同步,两个都勾选;增量同步,两个都不勾选,然后在下面的同步操作类型中勾选 DDL 和 DML。
投递到 Kafka 数据格式
Avro 为二进制格式,消费效率更高,JSON 为轻量级的文本格式,更加简单易用。
指定启动位点
初始化类型都不勾选时,表示仅增量同步,可设置增量同步的起始位点。当前使用该功能需要 提交工单 申请。
1. 增量同步任务,从设置的时间点开始同步数据,设置的时间点范围为:之前的14天-当前时间。
2. 如果全量同步和增量同步分开执行,这里请注意,进行全量同步时,DTS 已经同步的全量数据时间点1与设置的时间点2之间,不能存在 DDL 变更数据,否则任务会报错。
3. 从设置的指定时间点1,到增量任务启动点2之间(任务步骤从“寻找指定位点”转化为“同步增量”才算启动),源库不能进行 DDL 操作,也不建议进行主从切换、增加分片、重做备机操作,否则可能会导致同步任务异常。
4. 因为指定时间点同步是根据 Binlog 中 context 的时间(SET TIMESTAMP=XXXX)来判断其 GTID,为保证同步数据的正确性,建议用户不要修改该 context。
5. 请确认数据库设置的时区与当前控制台时区(即浏览器时区)一致,或者换算为数据库设置时区所对应的时间,否则可能会导致指定位点同步结果不合预期。
6. 请确认 TDSQL MySQL 各集群节点的时间保持一致,否则可能会导致指定位点同步结果不合预期。
7. 如果设置的时间点在 XA 事务持续时间的范围内,则该 XA 事务不会被同步。对于这种情况,建议时间点可以往前设置一些(在 XA START 的时间之前)。
4.2 数据同步到 Kafka 策略-自定义 Topic 名称

4.3 数据同步到 Kafka 策略-集中投递到单 Topic

参数
描述
同步 Topic 策略
自定义 Topic 名称:自行设置投递的 Topic 名称,设置后目标端 Kafka 会自动创建该 Topic。实现效果,将同步数据随机投递到该 Topic 下的不同分区中。如果目标端 Kafka 创建 Topic 失败,任务会报错。
集中投递到单 Topic:选择一个目标端已有的 Topic,然后按照多种分区策略投递,支持单分区或者按表名或者按表名+主键划分分区,投递到不同分区中。
自定义 Topic 名称
用户添加了多条规则,自定义 Topic 匹配规则会从上到下逐条匹配。设置的库名和表名规则都匹配上,才会投递到该条规则对应的 Topic 中。如果没有匹配到库表匹配规则,则会投递到最后一条规则的 Topic 中;如果匹配到多条库表匹配规则,则会投递到所有匹配规则的 Topic 中。
库表、表名的匹配规则支持 RE2 正则表达式。如果需要精确匹配,则要加开始符“^”和结束符“$”,如精准匹配“test”表应该为“^test$”。
说明:
匹配规则对库表名大小写敏感。
如果源库设置 lower_case_table_names=0,则库表匹配规则中库表名需要与源库中的名称大小写严格保持一致。
如果源库设置 lower_case_table_names=1,则库表名统一转换为小写,库表匹配规则中库表名统一输入小写。
Topic 分区策略
选择指定的 Topic 后,系统会按照如下指定策略进行分区。
全部投递至 Partition0:将源库的同步数据全部投递到第一个分区。
按表名分区:将源库的同步数据按照表名进行分区,设置后相同表名的数据会写入同一个分区中。
按表名+主键分区:将源库的同步数据按照表名+主键分区,适用于热点数据,设置后热点数据的表,通过表名+主键的方式将数据分散到不同分区中,提升并发消费效率。
存储 DDL 的 Topic
可选,如果用户需要将源库的 DDL 操作单独投递到指定 Topic 中,可以在此处选择设置。 设置后默认投递到已选 Topic 的 Partition0;如果没设置会根据上面选择的 Topic 规则进行投递。
4.4 数据同步选项

设置项
参数
描述
数据同步选项
同步操作类型
支持操作:Insert、Update、Delete、DDL。
支持设置 DDL 过滤策略。
同步对象选项
源库对象
勾选源库待同步对象到右侧已选对象。
依次勾选单个表对象后,可以设置 Where 条件,详情参考 Where 条件过滤
5. 在校验任务页面,完成校验并全部校验项通过后,单击启动任务。 如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。
失败:表示校验项检查未通过,任务阻断,需要修复问题后重新执行校验任务。
警告:表示检验项检查不完全符合要求,可以继续任务,但对业务有一定的影响,用户需要根据提示自行评估是忽略警告项还是修复问题再继续。
6. 返回数据同步任务列表,任务开始进入运行中状态。
说明:
选择操作列的更多 > 结束可关闭同步任务,请您确保数据同步完成后再关闭任务。

7. (可选)您可以单击任务名,进入任务详情页,查看任务初始化状态和监控数据。

后续操作

数据同步到目标端 Kafka 后,可进行数据消费,我们为您提供了消费示例 Demo,方便您快速测试消费数据的流程,了解数据格式解析的方法。具体请参考 数据消费操作指导