《企业级云原生白皮书项目实战》——第五章 大数据——5.3 实时计算Flink版——5.3.2 Flink任务开发相关(1) https://developer.aliyun.com/article/1228387?groupCode=supportservice
•分库分表场景主要是通过flflink sql 来实现cdc方式的分库分表实时合并写入。
•整库同步场景通常CDAS都会配合数据源的Catalog和目标的Catalog一起使用,例如MySQL Catalog和Hologres Catalog结合CDAS语法,完成 MySQL到Hologres的全量和增量数据同步。使用MySQL1Catalog可以自动解析源表的Schema及相应的参数,而不用手动编写DDL。假设我们已在工作空间中注册了名为holo的Hologres Catalog和名为mysql的MySQL Catalog,MySQL中有一个tpcds的
库。您可以使用以下语句将tpcds库下的24张表全部同步到Hologres中,包括未来的数据变更和表结构变更,无需提前在Hologres中创建表。
USE CATALOG holo; CREATE DATABASE IF NOT EXISTS holo_tpcds -- 在hologres中创建holo_tpcds库。 WITH ('sink.parallelism' = '4') -- 可选,指定目标库的参数,每个holo sink默认使用4并发。 AS DATABASE mysql.tpcds INCLUDING ALL TABLES -- 同步mysql中tpcds库下所有表。 /*+ OPTIONS('server-id'='8001-8004') */ ; -- 可选,指定mysql-cdc源表的额外参数。
说明Hologres支持在创建目标Database时指定WITH参数,这些参数仅对当前作业生效,用于控制写入目标表时的行为,不会持久化到Hologres中。
•分库合并同步对于分库合并同步的场景,需要利用正则表达式的库名来匹配所要同步的多个分库。使用CDAS可以将上游多个分库下相同表名的数据合并同步到Hologres目标库对应表名的同一张表中,库名和表名会作为额外的两个字段写入到每张目标表中。为保证主键唯一性,库名、表名和原主键一起作为对应Hologres表的新联合主键。假设MySQL实例中有order_db01~order_db99多个分库,每个分库下都有order、order_detail等多张表。您可以使用以下语句将99个分库下的order、order_detail等表全部同步到Hologres中,包括未来的数据变更和表结构变更,无需提前在Hologres中创建表。
USE CATALOG holo; CREATE DATABASE IF NOT EXISTS holo_order -- 在Hologres中创建holo_order库,包括mysql中order分库的所有表。 WITH ('sink.parallelism' = '4') -- 可选,指定目标库的参数,每个Hologres Sink默认并发为4。 AS DATABASE mysql.`order_db[0-9]+` INCLUDING ALL TABLES -- 同步mysql中order_db分库下所有表。 /*+ OPTIONS('server-id'='8001-8004') */ ; -- 可选,指定mysql-cdc源表的额外参数。
分库分表合并同步,对于分库分表合并同步的场景,您可以结合MySQL Cata
log,利用正则表达式的表名和库名来匹配所要同步的多张表。使用CTAS可以将这多
张分库分表合并到一张Hologres表中,库名和表名会作为额外的两个字段写入到该
表中,为保证主键唯一性,库名、表名和原主键一起作为该Hologres表的新联合主
键。
USE CATALOG holo; CREATE TABLE IF NOT EXISTS user WITH ('jdbcWriteBatchSize' = '1024') AS TABLE mysql.`wp.*`.`user[0-9]+` /*+ OPTIONS('server-id'='8001-8004') */;
其合并的效果如下图所示。
如果在user02新增一列age,并插入一条数据。此时虽然多张分表的Schema并不一致,但是user02上后续的数据和Schema变更都能实时地自动同步到下游表中。
ALTER TABLE `user02` ADD COLUMN `age` INT; INSERT INTO `user02` (id, name, age) VALUES (27, 'Tony', 30);
《企业级云原生白皮书项目实战》——第五章 大数据——5.3 实时计算Flink版——5.3.2 Flink任务开发相关(3) https://developer.aliyun.com/article/1228384?groupCode=supportservice