文档中心MogDBMogDB StackUqbar

文档: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 配置菜单:

img

点击 Topic 配置会弹窗展示 Topic 配置页面,Topic 配置可分为三大类别:

  • 全局 Topic: 通道内的所有表,均使用相同的 Topic(全量和增量可分别指定)
  • 独立 Topic: 通道内每一张表都使用独立的 Topic(全量和增量可分别指定)
  • 自定义 Topic: 可自由定制每一张表的全量或增量 Topic

右侧 topicParams 则针对通道内所有 Topic 均会设置此高级参数,默认不需要配置,仅在有特殊业务需求的场景下配置。

全局Topic

这是 MogDB 到 Kafka 的默认配置方式,通道内所有表均会使用相同的全量和增量 Topic。

可以分别指定全量和增量 Topic 名称,也可以全量和增量使用相同的一个 Topic 名称。

img

独立Topic

每张表使用各自表名相关的 Topic,根据全量和增量是否合并分为两种:

  • 合并存放:每张表创建一个 Topic,该表的所有全量和增量数据都发送到这一个 Topic 中
  • 分离存放:每张表创建两个 Topic,分别存放全量和增量数据

img

自定义Topic

自由定制每张表的全量或增量 topic 名称,该配置方式自由度非常高,但对于表数量较多的通道,配置起来略显复杂。

可先选择全局 Topic 或独立 Topic 作为基础配置并保存,然后再进入 Kafka Topic 配置页面进行精细化调整。

自定义 Topic 调整可以直接在表格中针对单表进行修改调整,也可以批量选择多张表,配置其全量或增量 topic。

img

3. 数据格式说明

3.1 全量快照数据

同步到 kafka 的数据中除了源端表的快照数据之外,还会在全量快照前后分别发送快照标识数据,消费端可根据这些快照标识来实现快照的数据清理,快照与增量数据的衔接,以及表级断点续传等功能。

3.1.1 全量快照标识

  1. 快照开始标识
{
  "sourceSchemaName": "test_schema",
  "sourceTableName": "test_table",
  "status": " SNAPSHOT_BEGIN"
}
  1. 快照结束标识
{
  "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类型,包括:CREATEALTERDROPt 四种

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操作,包括:cud 三种,分别表示插入,更新和删除。
before 根据是否有主键,其中的数据也有所区别
有主键:存放主键字段的前镜像数据;
无主键:存放所有字段的前镜像数据
after 存放变更之后的全字段后镜像数据
Copyright © 2011-2024 www.enmotech.com All rights reserved.