v2.0
目标Kafka说明
本文主要针对 MogDB 到 Kafka 同步通道中的目标端 Kafka 相关配置以及数据格式的说明。
1. 同步限制
- MogDB 到 Kafka 同步仅支持表数据同步,包括一致性初始化全量数据同步,增量数据同步。增量数据包括 DML 数据同步以及部分 DDL 数据同步。
- MogDB 到 Kafka 数据同步,不支持大对象的数据同步,包括但不限于 BLOB、CLOB、NCLOB、BYTEA、LONGTEXT、TEXT、SMALLTEXT、TINYTEXT、RAW 等
2. 目标Kafka配置说明
Topic 配置入口
创建完 MogDB 到 Kafka 的通道后,可在对象列表右上角的更多菜单中,下拉找到 Topic 配置菜单:
点击 Topic 配置会弹窗展示 Topic 配置页面,Topic 配置可分为三大类别:
- 全局 Topic: 通道内的所有表,均使用相同的 Topic(全量和增量可分别指定)
- 独立 Topic: 通道内每一张表都使用独立的 Topic(全量和增量可分别指定)
- 自定义 Topic: 可自由定制每一张表的全量或增量 Topic
右侧 topicParams
则针对通道内所有 Topic 均会设置此高级参数,默认不需要配置,仅在有特殊业务需求的场景下配置。
全局Topic
这是 MogDB 到 Kafka 的默认配置方式,通道内所有表均会使用相同的全量和增量 Topic。
可以分别指定全量和增量 Topic 名称,也可以全量和增量使用相同的一个 Topic 名称。
独立Topic
每张表使用各自表名相关的 Topic,根据全量和增量是否合并分为两种:
- 合并存放:每张表创建一个 Topic,该表的所有全量和增量数据都发送到这一个 Topic 中
- 分离存放:每张表创建两个 Topic,分别存放全量和增量数据
自定义Topic
自由定制每张表的全量或增量 topic 名称,该配置方式自由度非常高,但对于表数量较多的通道,配置起来略显复杂。
可先选择全局 Topic 或独立 Topic 作为基础配置并保存,然后再进入 Kafka Topic 配置页面进行精细化调整。
自定义 Topic 调整可以直接在表格中针对单表进行修改调整,也可以批量选择多张表,配置其全量或增量 topic。
3. 数据格式说明
3.1 全量快照数据
同步到 kafka 的数据中除了源端表的快照数据之外,还会在全量快照前后分别发送快照标识数据,消费端可根据这些快照标识来实现快照的数据清理,快照与增量数据的衔接,以及表级断点续传等功能。
3.1.1 全量快照标识
- 快照开始标识
{
"sourceSchemaName": "test_schema",
"sourceTableName": "test_table",
"status": " SNAPSHOT_BEGIN"
}
- 快照结束标识
{
"sourceSchemaName": "test_schema",
"sourceTableName": "test_table",
"status": " SNAPSHOT_END"
}
数据格式说明
sourceSchemaName | 源端表的 Schema 名称 |
sourceTableName | 源端表的名称 |
status | 全量快照标识:SNAPSHOT_BEGIN 表示全量数据开始, SNAPSHOT_END 表示全量数据结束 |
3.1.2 全量快照数据
全量快照的实际数据如下:
{
"source": {
"db": "test_db",
"schema": "test_schema",
"table": "test_tab"
},
"syncType": "full",
"op": "c",
"after": {
"a1": "1",
"b1": "test"
}
数据格式说明:
source | 源端的表信息,主要包括所属数据库,Schema以及表名称 - db:表所属的数据库名 - schema:表schema - table:表名 |
syncType | 数据同步类型:full 表示全量,sync 表示增量 |
op | 操作类型,对于全量数据来说,操作类型恒为 c |
after | 全量对应的行数据,Key-Value结构 其中 Key 为字段名,Value 为字段值 |
3.2 增量
增量数据分为 DDL 和 DML 两种。
3.2.1 DDL
{
"source": {
"db": "test_db",
"schema": "test_schema",
"table": "test_tab"
},
"ddlContent": "DROP INDEX s1.idx_a1",
"ddlType": "ALTER",
"syncType": "sync"
}
source | 源端的表信息,主要包括所属数据库,Schema以及表名称 - db:表所属的数据库名 - schema:表schema - table:表名 |
syncType | 数据同步类型:full 表示全量,sync 表示增量 |
ddlContent | 源端执行的 DDL 语句,对于 truncate 语句(ddlType=t ),无 ddlContent |
ddlType | DDL类型,包括:CREATE 、ALTER 、DROP 、t 四种 |
3.2.2 DML
{
"source": {
"db": "dbName",
"schema": "s1",
"table": "t1"
},
"op": "u",
"after": {
"a1": "1",
"b1": "WW"
},
"before": {
"a1": "1",
"b1": "2"
},
"hasPrimaryKey": false,
"syncType": "sync"
}
source | 源端的表信息,主要包括所属数据库,Schema以及表名称 - db:表所属的数据库名 - schema:表schema - table:表名 |
syncType | 数据同步类型:full 表示全量,sync 表示增量 |
hasPrimaryKey | 源端数据表上是否有主键 |
op | DML操作,包括:c 、u 、d 三种,分别表示插入,更新和删除。 |
before | 根据是否有主键,其中的数据也有所区别 有主键:存放主键字段的前镜像数据; 无主键:存放所有字段的前镜像数据 |
after | 存放变更之后的全字段后镜像数据 |