本文向您介绍在Flink CDC数据摄入作业中编写消息路由(Route)规则的语法。您可以在Flink CDC数据摄入作业的route模块中定义多条路由规则,指定上游表到下游表的映射关系。
Route规则参数
参数 | 含义 | 是否必填 | 备注 |
| 指定生效上游表。 | 是 | 支持使用正则表达式。 |
| 指定数据路由的目标位置。 | 是 | 无。 |
| 在使用模式匹配功能时,用于指代上游表名的字符串。 | 否 | 例如,当replace-symbol设置为 |
| 该route模块的描述信息。 | 否 | 无。 |
重要
修改Route模块的语句后,需要进行无状态启动。
使用示例
单表同步至单表
将上游表mysql_db.web_order
中的数据路由到下游表sink_db.ods_web_order
。
route:
- source-table: mysql_db.web_order
sink-table: sink_db.ods_web_order
description: sync a table to one destination table with given prefix ods_
单表同步至多表
将同一张表的数据分发给多个下游表,只需定义多条路由规则即可。例如将mydb.orders
的数据会被同时分发到sink_db
和backup_sink_db
两个数据库中。
route:
- source-table: mydb.orders
sink-table: sink_db.orders
- source-table: mydb.orders
sink-table: backup_sink_db.orders
多表同步至多表
可以在一个route块中使用YAML列表符号(-
)定义多条规则,它们会同时生效。
route:
- source-table: mydb.orders
sink-table: ods_db.ods_orders
description: sync orders table to ods_orders
- source-table: mydb.shipments
sink-table: ods_db.ods_shipments
description: sync shipments table to ods_shipments
- source-table: mydb.products
sink-table: ods_db.ods_products
description: sync products table to ods_products
分库分表同步
将上游source_db
数据库中的所有表合并到下游sink_db.merged
表中。
route:
- source-table: source_db.\.*
sink-table: sink_db.merged
description: sync sharding tables to one destination table
整库同步
将source_db
数据库中的全部表一一对应地同步到sink_db
中,并保持表名不变。
route:
- source-table: source_db.\.*
sink-table: sink_db.<>
replace-symbol: <>
description: route all tables in source_db to sink_db
使用replace-symbol
参数定义的<>
特殊字符串会被表名替代,从而实现源表到汇表的一一对应。
该文章对您有帮助吗?