Flink CDC Route模块

本文向您介绍在Flink CDC数据摄入作业中编写消息路由(Route)规则的语法。您可以在Flink CDC数据摄入作业的route模块中定义多条路由规则,指定上游表到下游表的映射关系。

Route规则参数

参数

含义

是否必填

备注

source-table

指定生效上游表。

支持使用正则表达式。

sink-table

指定数据路由的目标位置。

无。

replace-symbol

在使用模式匹配功能时,用于指代上游表名的字符串。

例如,当replace-symbol设置为<>时,可以将sink-table配置为sinkdb.<>。这样,来自上游的表table1会被写入到sinkdb.table1表中。

description

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_
image

单表同步至多表

将同一张表的数据分发给多个下游表,只需定义多条路由规则即可。例如将mydb.orders的数据会被同时分发到sink_dbbackup_sink_db两个数据库中。

route:
  - source-table: mydb.orders
    sink-table: sink_db.orders
  - source-table: mydb.orders
    sink-table: backup_sink_db.orders
image

多表同步至多表

可以在一个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
image

分库分表同步

将上游source_db数据库中的所有表合并到下游sink_db.merged表中。

route:
  - source-table: source_db.\.*
    sink-table: sink_db.merged
    description: sync sharding tables to one destination table
image

整库同步

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参数定义的<>特殊字符串会被表名替代,从而实现源表到汇表的一一对应。

image