O módulo route mapeia tabelas de origem para tabelas de destino em um pipeline do Flink CDC. Configure regras de roteamento para renomear tabelas, consolidar várias tabelas de origem em uma única tabela de destino ou replicar uma tabela de origem para múltiplos destinos.
Parâmetros
|
Parâmetro |
Descrição |
Obrigatório |
|
|
Tabela de origem a ser correspondida. Aceita expressões regulares. |
Sim |
|
|
Tabela de destino para gravação dos dados. Aceita placeholders |
Sim |
|
|
String de placeholder inserida no valor de |
Não |
|
|
Descrição da regra de roteamento. |
Não |
Após modificar o módulo de roteamento, execute uma inicialização sem estado para aplicar as novas regras.
Exemplos
Sincronização de tabela única
Roteie dados de mysql_db.web_order para sink_db.ods_web_order:
route:
- source-table: mysql_db.web_order
sink-table: sink_db.ods_web_order
description: sync data from a source table to a sink table
Mapeamento um-para-muitos
Para replicar uma tabela de origem em várias tabelas de destino, defina múltiplas regras de roteamento com o mesmo source-table. As regras abaixo replicam mydb.orders simultaneamente para sink_db.orders e backup_sink_db.orders:
route:
- source-table: mydb.orders
sink-table: sink_db.orders
- source-table: mydb.orders
sink-table: backup_sink_db.orders
Múltiplos mapeamentos um-para-um
Defina várias regras independentes usando o indicador de lista YAML (-). Todas as regras são aplicadas simultaneamente:
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
Consolidação de tabelas fragmentadas
Consolide todas as tabelas de source_db na única tabela de destino sink_db.merged:
route:
- source-table: source_db.\.*
sink-table: sink_db.merged
description: merge sharded tables to a unified sink table
Sincronização de banco de dados
Sincronize todas as tabelas de source_db com as tabelas correspondentes em sink_db e mantenha os nomes originais. O placeholder <> em sink-table é substituído pelo nome de cada tabela de origem correspondente. Assim, source_db.XXX é roteado para sink_db.XXX:
route:
- source-table: source_db.\.*
sink-table: sink_db.<>
replace-symbol: <>
description: route all tables in source_db to sink_db
Roteamento avançado com grupos de captura
Crie grupos de captura na expressão regular de source-table usando parênteses e referencie os valores capturados em sink-table por meio de $1, $2, entre outros.
Adicionar prefixo aos nomes dos bancos de dados e manter os nomes das tabelas inalterados:
route:
- source-table: (\.*).(\.*)
sink-table: ods_$1.$2
$1 captura o nome completo do banco de dados e $2 captura o nome completo da tabela.
Adicionar prefixo aos nomes dos bancos de dados e das tabelas:
route:
- source-table: (\.*).(\.*)
sink-table: ods_$1.upstream_$2
Achatar nomes de bancos de dados e tabelas em uma única tabela de destino:
route:
- source-table: db_no_(\.*).table_no_(\.*)
sink-table: sink_db.table_$1_$2
Por exemplo, db_no_100.table_no_300 corresponde aos grupos de captura 100 e 300 e é roteado para sink_db.table_100_300.