tencent cloud

数据传输服务

动态与公告
产品动态
公告
产品简介
产品概述
数据迁移功能描述
数据同步功能描述
数据订阅(Kafka 版)功能描述
产品优势
支持的地域
规格说明
购买指南
计费概述
变更配置说明
欠费说明
退费说明
快速入门
数据迁移操作指导
数据同步操作指导
数据订阅操作指导(Kafka 版)
准备工作
业务评估
网络准备
添加 DTS IP 地址至对接数据库白名单
DTS 服务权限准备
数据库及权限准备
配置自建 MySQL 系的 Binlog
数据迁移
数据迁移支持的数据库
云数据库跨账号实例间迁移
迁移至 MySQL 系列
迁移至 PostgreSQL
迁移至 MongoDB
迁移至 SQL Server
迁移至腾讯云分布式缓存数据库
任务管理
数据同步
数据同步支持的数据库
云数据库跨账号实例间同步
同步至 MySQL 系列
同步至 PostgreSQL
同步至 MongoDB
同步至 Kafka
任务管理
数据订阅(Kafka 版)
数据订阅支持的数据库
MySQL 系列数据订阅
TDSQL PostgreSQL 数据订阅
MongoDB 数据订阅
任务管理
消费管理
前置校验不通过处理方法
检查项汇总
割接说明
监控与告警
支持的监控指标
告警通知功能
通过控制台配置指标告警和事件告警
通过 API 配置指标告警和事件告警
运维管理
配置系统维护时间
任务状态扭转说明
实践教程
本地数据库同步上云
构建双向同步数据结构
构建多对一同步数据结构
构建多活数据中心
数据同步冲突策略如何选择
使用 CLB 代理将其他账号下的数据库迁移至本账号下
通过云联网方式迁移自建数据库至腾讯云数据库
DTS 性能调优最佳实践
常见问题
数据迁移
数据同步
数据订阅 Kafka 版常见问题
数据订阅正则表达式
错误处理
常见错误处理
连通性测试不通过
校验项结果不通过或者出现警告
云联网接入配置源数据时无法选择子网
迁移慢或者进度卡住
数据同步有延时
数据订阅延迟过高
数据消费异常
API 文档
History
Introduction
API Category
Making API Requests
(NewDTS) Data Migration APIs
Data Sync APIs
Data Consistency Check APIs
(NewDTS) Data Subscription APIs
Data Types
Error Codes
DTS API 2018-03-30
相关协议
服务等级协议
文档数据传输服务数据同步同步至 Kafka数据投递到 Kafka 策略设置

数据投递到 Kafka 策略设置

PDF
聚焦模式
字号
最后更新时间: 2024-07-08 18:44:49

操作场景

源端数据同步到 Kafka 时,支持灵活的投递策略,可以将不同表的数据投递到不同的 Topic 中,也可以集中投递到单 Topic 中。不同策略的说明如下:
策略类别
单 Topic 分区策略
功能场景
自定义 Topic 名称
不涉及
可将不同的库、表数据投递到不同的 Topic 中。
集中投递到单 Topic
Topic 分区策略(默认分区策略)
全部投递至 Partition0:全部投递到单 Topic 中的第一个分区。
按表名分区:将同一个表的数据投递到同一个分区。
按表名 + 主键分区:将同一个表中相同主键值的数据投递到同一个分区。适用于热点数据,设置后热点数据的表,可以分散投递到不同分区。
Topic 分区策略(默认分区策略)+自定义分区策略
1. 先将匹配到的库、表数据,按照自定义分区策略(支持按表名分区、按表名+主键分区、按列分区)进行投递。
2. 再将剩余未匹配到的库、表数据,按照 Topic 分区策略(默认分区策略),进行投递。

自定义 Topic 名称

功能说明

用户自行设置投递的 Topic 名称,DTS 按照填入的 Topic 名称往目标端 Kafka 写入:
如果目标端有该 Topic,或者没有该 Topic 但是 auto.create.topics.enable = ture,DTS 会写入成功。
如果目标端没有该 Topic,并且 auto.create.topics.enable = false,则 DTS 写入失败,同时同步任务会报错。
auto.create.topics.enable 为 Kafka 中的配置参数,用于控制是否允许自动创建 Topic,通常在 Kafka 的配置文件 server.properties 中修改。当设置为 true 时,Kafka 在收到不存在的 Topic 的请求时会自动创建该 Topic。当设置为 false 时,不会自动创建 Topic。

配置规则

选择自定义 Topic 名称,用户设置了多条规则时,DTS 会从上到下逐条匹配。
如果匹配到设置的规则(源端的库名和表名都符合设置的规则),则会投递到该条规则对应的 Topic 中。
如果匹配到多条规则,则会投递到所有匹配规则的 Topic 中。
剩余没有匹配到设置规则的数据,则会投递到最后一条规则的 Topic 中。
匹配规则对库名、表名大小写敏感。
如果源库设置 lower_case_table_names = 0,则设置的匹配规则中库表名需要与源库中的名称大小写严格保持一致。
如果源库设置 lower_case_table_names = 1,则库表名统一转换为小写,设置的匹配规则中库表名统一输入小写。
库表、表名的匹配规则支持 RE2 正则表达式,具体语法请参考 语法说明。如果需要精确匹配,则要加开始符“^”和结束符“$”,如精准匹配“test”表应该为“^test$”。

配置示例

数据库实例 X 中,Users 库里有表 Teacher 、Student、Student1、Student2、Student3。
示例一:将 Users 库中的数据都投递到 Topic_A 中,剩余的数据投递到 Topic_default 中。



Topic 名称
库名匹配模式
表名匹配规模式
说明
Topic_A
^Users$
.*
“^Users$”表示精准匹配Users库,“^”为开始符,“$”为结束符;仅填入“Users”表示匹配所有包含Users的库名,如表X_Users_1会匹配上。
“.*”表示匹配所有的表名。
Topic_default
不符合匹配规则的剩余库
不符合匹配规则的剩余表
-
示例二:将“Teacher”表的数据投递到“Topic_A”,“Student”表的数据投递到“Topic_B”,剩余数据投递到“Topic_default”。

Topic 名称
库名匹配模式
表名匹配规模式
说明
Topic_A
^Users$
^Teacher$
“^Teacher$”表示精准匹配表名 Teacher,“^”为开始符,“$”为结束符;如果仅填入“Teacher”,则会匹配包含 Teacher 的所有表,如 F_Teacher_1会匹配到。
Topic_A
^Users$
^Student$
-
Topic_default
不符合匹配规则的剩余库
不符合匹配规则的剩余表
-
示例三:将“Teacher”表数据投递到“Topic_A ”中,前缀为“Student”的表(即表Student、Student1、Student2、Student3)都投递到“Topic_B”,剩余数据投递到“Topic_default”。

Topic 名称
库名匹配模式
表名匹配规模式
说明
Topic_A
^Users$
^Teacher$
-
Topic_A
^Users$
^Student
“^Student”表示匹配所有前缀为 Student 的表,即 Student、Student1、Student2、Student3都匹配。
Topic_default
不符合匹配规则的剩余库
不符合匹配规则的剩余表
-

集中投递到单 Topic(默认分区策略)

选择一个目标端已有的 Topic,然后按照多种分区策略投递,支持“单分区”、“按表名分区”、“按表名 + 主键分区”。


全部投递至 Partition0(即单分区)

将源库的同步数据全部投递到单 Topic 中的第一个分区。

按表名分区

将源库的同步数据按照表名进行分区,设置后相同表名的数据会投递同一个分区中。


按表名 + 主键分区

将源库的同步数据按照表名 + 主键分区,设置后同一个表中主键值相同的数据会投递同一个分区中。该策略适用于热点数据,设置后热点数据的表,将分散到不同分区中,提升并发消费效率。


自定义分区策略

当 Topic 分区策略(默认分区策略)选择按“表名分区”、“按表名 + 主键分区”时,支持勾选自定义分区策略。
自定义分区策略是通过正则表达式对库名和表名进行匹配,将匹配到的数据按照表名、表名 + 主键、列进行分区,剩余未匹配到的数据再按照 Topic 分区策略(默认分区策略)的设置进行分区。


匹配规则

库表、表名的匹配规则支持 RE2 正则表达式,具体语法请参考 语法说明
库名的匹配规则,按照正则表达式来匹配库名。表名的匹配规则,按照正则表达式来匹配表名的数据。如果库名和表名需要精确匹配,需要加开始和结束符,如 test 表应该为 ^test$
列名的匹配规则,按照等值 == 来匹配,大小写不敏感。
优先匹配自定义分区策略,当自定义分区策略有多条时,自上向下逐条匹配。自定义分区策略未匹配到的剩余数据,再按照 Topic 分区策略进行投递。

按表名分区

库名匹配模式填入 ^A$,表名匹配模式填入 ^test$,选择按表名分区后,A 库中 test 的数据会投递到同一个分区中,test 除外其他未匹配到的库表数据会根据 Topic 分区策略(默认分区策略)中设置的策略进行投递。


按表名 + 主键分区

库名匹配模式填入 ^A$,表名匹配模式填入 ^test$,选择按表名+主键分区后,A 库中 test 的数据会根据主键数据的不同,散列投递到不同的分区中,最终主键数据相同的数据都投递到了同一个分区。test 除外其他未匹配到的库表数据会根据 Topic 分区策略(默认分区策略)中设置的进行投递。


按列分区

库名匹配模式填入 ^A$,表名匹配模式填入 ^test$,自定义分区列填入class,选择按列名分区后,A 库中表 test 列名为 class 的数据将被散列到不同分区中,最终同一列的数据更新都投递到了一个分区中。test 除外其他未匹配到的库表数据会根据 Topic 分区策略(默认分区策略)中设置进行投递。



帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈