全部產品
Search
文件中心

Realtime Compute for Apache Flink:Flink CDC Route模組

更新時間:Feb 06, 2026

本文向您介紹在Flink CDC資料攝入作業中編寫訊息路由(Route)規則的文法。您可以在Flink CDC資料攝入作業的route模組中定義多條路由規則,指定上遊表到下遊表的映射關係。

Route規則參數

參數

含義

是否必填

備忘

source-table

指定生效上遊表。

支援使用Regex。

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

進階路由規則

Route模組支援完整的正則擷取的群組替換規則。

您可以在 source-tableRegex中使用圓括弧建立擷取的群組,並在sink-table中使用$1$2依次引用捕獲的內容。

以下是一些常見的用例及對應的路由規則:

  • 將捕獲的全部資料庫統一增加首碼,並保持表名不變:

    route:
      - source-table: (\.*).(\.*)
        sink-table: ods_$1.$2

    其中,第一個擷取的群組($1)匹配完整的資料庫名,第二個擷取的群組($2)匹配完整的表名。最後,根據庫名表名組成完整的下遊表ID。

  • 將捕獲的全部資料庫、表統一增加首碼:

    route:
      - source-table: (\.*).(\.*)
        sink-table: ods_$1.upstream_$2
  • 將捕獲的全部資料庫、表名拼合成下遊表的名字,寫入同一個資料庫:

    route:
      - source-table: db_no_(\.*).table_no_(\.*)
        sink-table: sink_db.table_$1_$2

    此規則會從db_no_100.table_no_300中提取出兩個擷取的群組(100300),並寫入到 sink_db.table_100_300下遊表中。