您正在查看 Debezium 未发布版本的文档。
如果您想查看此页面的最新稳定版本,请在此 查看。

Vitess 替换字段值

ReplaceFieldValue SMT 会替换事件记录中指定字段的值。当连接器配置为提供事务元数据时,可以使用此 SMT 来隐藏 transaction.id 字段,以避免存储 VGTID 的重复条目,或者同时用于 transaction.idsource.vgtid,以避免存储任何大型 VGTID。此转换仅设计用于 Debezium Vitess 连接器。

SMT 使用 field_names 配置选项来指定一个逗号分隔的路径列表,这些路径标识将替换其值的字段。SMT 使用 field_value 配置选项来指定字段的替换值。默认为空字符串。

SMT 会替换您指定的每个字段的值。以下示例展示了如何将 SMT 添加到连接器配置中,以便它替换连接器发出的更改事件记录中的特定字段的值。

示例:配置 ReplaceFieldValue SMT

"connector.class": "io.debezium.connector.vitess.VitessConnector",
...
"transforms": "replaceFieldValue",
"transforms.replaceFieldValue.type": "io.debezium.connector.vitess.transforms.ReplaceFieldValue",
"transforms.replaceFieldValue.field_names": "transaction.id",
...

以下示例展示了在应用转换之前和之后变更事件记录的值。

示例 1. 应用 ReplaceFieldValue SMT 的效果
SMT 处理记录之前的值
{
    "before": {...}
    "after": {...}
    "source": {...}
    "transaction": {
        "id": "[{\"keyspace\":\"test_unsharded_keyspace\",\"shard\":\"0\",\"gtid\":\"MySQL56/e03ece6c-4c04-11ec-8e20-0242ac110004:1-68\"}]",
        "total_order": 1,
        "data_collection_order": 1
      }
}
SMT 处理记录之后的值
{
    "before": {...}
    "after": {...}
    "source": {...}
    "transaction": {
        "id": "",
        "total_order": 1,
        "data_collection_order": 1
      }
}

ReplaceFieldValue SMT 的配置选项

下表列出了您可以与 ReplaceFieldValue SMT 一起使用的配置选项。

表 1. ReplaceFieldValue SMT 配置选项

属性

描述

Type

Default (默认值)

有效值

重要性

一个逗号分隔的列表,用于指定事件记录的字段路径,例如 transaction.id)。

列表

无默认值

非空列表

每个替换字段设置的值,例如。

列表

""(空字符串)

字符串值