变形
架构变更事件过滤
登录后可跨设备保存划线和私人笔记登录
SchemaChangeEventFilter
使用 SchemaChangeEventFilter 单消息转换(SMT)可以过滤连接器从表中捕获并发送到 Kafka 的模式变更事件。启用该 SMT 后,连接器只会将未被过滤的 DDL 事件同步到 Kafka,从而让你能够控制哪些 DDL 操作会暴露给消费应用程序。
模式变更事件过滤配置
要使用该转换,需将 SchemaChangeEventFilter 添加到连接器配置中,并指定要移除的事件类型。下面的连接器配置片段展示了如何将该转换添加到连接器,并将其设置为从连接器捕获的 DDL 消息中移除 DROP 和 TRUNCATE 事件。
用于移除 DROP 和 TRUNCATE 事件的模式变更事件过滤配置
transforms=filterTableDropAndTruncateEvent
transforms.filterTableDropAndTruncateEvent.type=io.debezium.transforms.SchemaChangeEventFilter
transforms.filterTableDropAndTruncateEvent.schema.change.event.exclude.list=DROP,TRUNCATE有关配置该转换的更多信息,请参阅架构变更事件过滤配置选项。
应用 SchemaChangeEventFilter SMT 的效果
为连接器配置好该 SMT 之后,每当连接器捕获到与已配置类型相匹配的架构变更事件时,它都会将这些事件的值重置为 null。连接器不会将结果值为 null 的事件发送到 Kafka。
下面的示例展示了由 SMT 处理之前的架构变更事件记录,以及该事件经过 SMT 过滤后的输出。
示例 1. 由 SchemaChangeEventFilter 转换处理之前的架构变更事件记录
{
"schema":{
"type":"struct",
"fields":[
{
"type":"int64",
"optional":false,
"field":"ts_ms"
},
{
"type":"string",
"optional":true,
"field":"databaseName"
},
{
"type":"string",
"optional":true,
"field":"schemaName"
},
{
"type":"string",
"optional":true,
"field":"ddl"
},
{
"type":"array",
"items":{
"type":"struct",
"fields":[
{
"type":"string",
"optional":false,
"field":"type"
},
{
"type":"string",
"optional":false,
"field":"id"
}
],
"optional":false,
"name":"io.debezium.connector.schema.Change"
},
"optional":false,
"field":"tableChanges"
}
],
"optional":false,
"name":"filter.SchemaChangeValue"
},
"payload":{
"ts_ms":1691035505397,
"databaseName":"test",
"schemaName":"test_schema",
"ddl":"",
"tableChanges":[
{
"type":"DROP",
"id":"test.table"
}
]
}
}基于前面的配置示例,SMT 处理原始 schema 变更事件之后,会将 DROP 事件的值重置为 null,如下例所示:
示例 2. SMT 处理后的 schema 变更事件记录
null配置选项
下表列出了可与 SchemaChangeEventFilter SMT 一起使用的配置选项。
表 1. SchemaChangeEventFilter SMT 配置选项
| 属性 | 说明 | 类型 | 默认值 | 有效值 |
|---|---|---|---|---|
schema.change.event.exclude.list |
以逗号分隔的要过滤的模式变更事件列表。请指定以下选项中的一个或多个: - CREATE- ALTER- DROP- TRUNCATE- DATABASE |
字符串 | 无默认值 | 非空字符串 |
评论
登录后参与评论
正在加载评论…
KnowForge