Vitess 使用本地 VGTID
UseLocalVgtid SMT 将事件记录中 VGTID 的值从多个分片 VGTID 列表转换为接收到此事件更改的单个分片的 VGTID。此转换仅用于 Debezium 的 Vitess 连接器。
SMT 从事务边界事件记录的 source 块中提取 shard 字段,以确定接收到更改的分片。然后,SMT 将事件记录中的 VGTID 值设置为指定分片的 VGTID 值。其他 VGTID 值将从事件记录中删除。以下示例展示了如何将 SMT 添加到连接器配置中,以便它将多个分片的 VGTID 列表转换为单个本地 VGTID 的值。
示例:配置 UseLocalVgtid SMT
"connector.class": "io.debezium.connector.vitess.VitessConnector",
...
"transforms": "useLocalVgtid",
"transforms.useLocalVgtid.type": "io.debezium.connector.vitess.transforms.UseLocalVgtid",
...
以下示例展示了在应用转换之前和之后的记录值。
示例 1. 应用
UseLocalVgtid SMT 的效果- SMT 处理记录之前的值
-
{ "source": { "version": "2.6.2.Final", "connector": "vitess", "name": "my_sharded_connector", "ts_ms": 1559033904000, "ts_us": 1559033904000000, "ts_ns": 1559033904000000000, "snapshot": "false", "db": "", "sequence": null, "keyspace": "commerce", "table": "customers", "shard": "-80", "vgtid": "[{\"keyspace\":\"commerce\",\"shard\":\"80-\",\"gtid\":\"MariaDB/0-54610504-47\"},{\"keyspace\":\"commerce\",\"shard\":\"-80\",\"gtid\":\"MariaDB/0-1592148-45\"}]" }, } - SMT 处理记录之后的值
-
{ "source": { "version": "2.6.2.Final", "connector": "vitess", "name": "my_sharded_connector", "ts_ms": 1559033904000, "ts_us": 1559033904000000, "ts_ns": 1559033904000000000, "snapshot": "false", "db": "", "sequence": null, "keyspace": "commerce", "table": "customers", "shard": "-80", "vgtid": "[{\"keyspace\":\"commerce\",\"shard\":\"-80\",\"gtid\":\"MariaDB/0-1592148-45\"}]" }, }