前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flink CDC同步MySQL分库分表数据到Iceberg数据湖实践

Flink CDC同步MySQL分库分表数据到Iceberg数据湖实践

作者头像
awwewwbbb
发布于 2022-04-27 01:09:15
发布于 2022-04-27 01:09:15
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

介绍

Flink CDC: 捕获数据库完整的变更日志记录增、删、改等所有数据. Flink在1.11版本开始引入了Flink CDC功能,并且同时支持Table & SQL两种形式。Flink SQL CDC是以SQL的形式编写实时任务,并对CDC数据进行实时解析同步。相比于传统的数据同步方案,该方案在实时性、易用性等方面有了极大的改善。

Flink CDC 同步优势:

  • 业务解耦:无需入侵业务,和业务完全解耦,也就是业务端无感知数据同步的存在。
  • 性能消耗:业务数据库性能消耗小,数据同步延迟低。
  • 同步易用:使用SQL方式执行CDC同步任务,极大的降低使用维护门槛。
  • 数据完整:完整的数据库变更记录,不会丢失任何记录,Flink 自身支持 Exactly Once。

数据湖: 支持存储多种原始数据格式、多种计算引擎、高效的元数据统一管理和海量统一数据存储

Apache Iceberg: 是一个大规模数据分析的开放表格式, 是数据湖的一种解决方案.

Iceberg 设计特点:

  • ACID:不会读到不完整的commit数据,基于乐观锁实现,支持并发commit,支持Row-level delete,支持upsert操作。
  • 增量快照:Commit后的数据即可见,在Flink实时入湖场景下,数据可见根据checkpoint的时间间隔来确定的,增量形式也可回溯历史快照。
  • 开放的表格式:对于一个真正的开放表格式,支持多种数据存储格式,如:parquet、orc、avro等,支持多种计算引擎,如:Spark、Flink、Hive、Trino/Presto
  • 流批接口支持:支持流式写入、批量写入,支持流式读取、批量读取

环境准备

准备Flink 、mysql docker镜像 测试环境:

docker-compose.yml:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: '2.1'
services:
  sql-client:
    user: flink:flink
    image: yuxialuo/flink-sql-client:1.13.2.v1 
    depends_on:
      - jobmanager
      - mysql
    environment:
      FLINK_JOBMANAGER_HOST: jobmanager
      MYSQL_HOST: mysql
    volumes:
      - shared-tmpfs:/tmp/iceberg
  jobmanager:
    user: flink:flink
    image: flink:1.13.2-scala_2.11
    ports:
      - "8081:8081"
    command: jobmanager
    environment:
      - |
        FLINK_PROPERTIES=
        jobmanager.rpc.address: jobmanager
    volumes:
      - shared-tmpfs:/tmp/iceberg
  taskmanager:
    user: flink:flink
    image: flink:1.13.2-scala_2.11
    depends_on:
      - jobmanager
    command: taskmanager
    environment:
      - |
        FLINK_PROPERTIES=
        jobmanager.rpc.address: jobmanager
        taskmanager.numberOfTaskSlots: 2
    volumes:
      - shared-tmpfs:/tmp/iceberg
  mysql:
    image: debezium/example-mysql:1.1
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_USER=mysqluser
      - MYSQL_PASSWORD=mysqlpw

volumes:
  shared-tmpfs:
    driver: local
    driver_opts:
      type: "tmpfs"
      device: "tmpfs"

在docker-compose.yml文件同目录下启动flink 组件:

docker-compose up -d

该命令将以 detached 模式自动启动 Docker Compose 配置中定义的所有容器

可以通过访问 http://localhost:8081/ 来查看 Flink 是否运行正常

本教程需要的 jar 包都已经被打包进 SQL-Client 容器中了,

如果你想要在自己的 Flink 环境运行本教程,需要下载下面列出的包并且把它们放在 Flink 所在目录的 lib 目录下,即 FLINK_HOME/lib/。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flink-sql-connector-mysql-cdc-2.1.0.jar
flink-shaded-hadoop-2-uber-2.7.5-10.0.jar
iceberg-flink-1.13-runtime-0.13.0-SNAPSHOT.jar

当 Iceberg 0.13.0 版本发布后,你也可以在 apache official repository 下载到支持 Flink 1.13 的 iceberg-flink-runtime jar 包。

https://repo.maven.apache.org/maven2/org/apache/iceberg/iceberg-flink-runtime/?spm=a2c6h.12873639.article-detail.13.1c396ec7vRoZE8

准备测试数据

进入 MySQL 容器中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose exec mysql mysql -uroot -p123456

创建数据和表,并填充数据:

创建两个不同的数据库,并在每个数据库中创建两个表,作为 user 表分库分表下拆分出的表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 CREATE DATABASE db_1;
 USE db_1;
 CREATE TABLE user_1 (
   id INTEGER NOT NULL PRIMARY KEY,
   name VARCHAR(255) NOT NULL DEFAULT 'flink',
   address VARCHAR(1024),
   phone_number VARCHAR(512),
   email VARCHAR(255)
 );
 INSERT INTO user_1 VALUES (110,"user_110","Shanghai","123567891234","user_110@foo.com");

 CREATE TABLE user_2 (
   id INTEGER NOT NULL PRIMARY KEY,
   name VARCHAR(255) NOT NULL DEFAULT 'flink',
   address VARCHAR(1024),
   phone_number VARCHAR(512),
   email VARCHAR(255)
 );
INSERT INTO user_2 VALUES (120,"user_120","Shanghai","123567891234","user_120@foo.com");


CREATE DATABASE db_2;
USE db_2;
CREATE TABLE user_1 (
  id INTEGER NOT NULL PRIMARY KEY,
  name VARCHAR(255) NOT NULL DEFAULT 'flink',
  address VARCHAR(1024),
  phone_number VARCHAR(512),
  email VARCHAR(255)
);
INSERT INTO user_1 VALUES (110,"user_110","Shanghai","123567891234", NULL);

CREATE TABLE user_2 (
  id INTEGER NOT NULL PRIMARY KEY,
  name VARCHAR(255) NOT NULL DEFAULT 'flink',
  address VARCHAR(1024),
  phone_number VARCHAR(512),
  email VARCHAR(255)
);
INSERT INTO user_2 VALUES (220,"user_220","Shanghai","123567891234","user_220@foo.com");

在 Flink SQL CLI 中使用 Flink DDL 创建表:

首先,使用如下的命令进入 Flink SQL CLI 容器中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose exec sql-client ./sql-client

开启 checkpoint

Checkpoint 默认是不开启的,我们需要开启 Checkpoint 来让 Iceberg 可以提交事务。 并且,mysql-cdc 在 binlog 读取阶段开始前,需要等待一个完整的 checkpoint 来避免 binlog 记录乱序的情况。

-- Flink SQL -- 每隔 3 秒做一次 checkpoint

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Flink SQL> SET execution.checkpointing.interval = 3s;

创建 MySQL 分库分表 source 表

创建 source 表 user_source 来捕获MySQL中所有 user 表的数据,在表的配置项 database-name , table-name 使用正则表达式来匹配这些表。 并且,user_source 表也定义了 metadata 列来区分数据是来自哪个数据库和表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE user_source (
    database_name STRING METADATA VIRTUAL,
    table_name STRING METADATA VIRTUAL,
    `id` DECIMAL(20, 0) NOT NULL,
    name STRING,
    address STRING,
    phone_number STRING,
    email STRING,
    PRIMARY KEY (`id`) NOT ENFORCED
  ) WITH (
    'connector' = 'mysql-cdc',
    'hostname' = 'mysql',
    'port' = '3306',
    'username' = 'root',
    'password' = '123456',
    'database-name' = 'db_[0-9]+',
    'table-name' = 'user_[0-9]+'
  );

创建 Iceberg sink 表

创建 sink 表 all_users_sink,用来将数据加载至 Iceberg 中。 在这个 sink 表,考虑到不同的 MySQL 数据库表的 id 字段的值可能相同,我们定义了复合主键 (database_name, table_name, id)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE all_users_sink (
    database_name STRING,
    table_name    STRING,
    `id`          DECIMAL(20, 0) NOT NULL,
    name          STRING,
    address       STRING,
    phone_number  STRING,
    email         STRING,
    PRIMARY KEY (database_name, table_name, `id`) NOT ENFORCED
  ) WITH (
    'connector'='iceberg',
    'catalog-name'='iceberg_catalog',
    'catalog-type'='hadoop',  
    'warehouse'='file:///tmp/iceberg/warehouse',
    'format-version'='2'
  );

流式写入 Iceberg

使用下面的 Flink SQL 语句将数据从 MySQL 写入 Iceberg 中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO all_users_sink select * from user_source;

述命令将会启动一个流式作业,源源不断将 MySQL 数据库中的全量和增量数据同步到 Iceberg 中。

然后我们就可以使用如下的命令看到 Iceberg 中的写入的文件:

docker-compose exec sql-client tree /tmp/iceberg/warehouse/default_database/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/tmp/iceberg/warehouse/default_database/
└── all_users_sink
    ├── data
    │   ├── 00000-0-84b83e87-0e98-48da-8871-4de54d802dc5-00009.parquet
    │   ├── 00000-0-84b83e87-0e98-48da-8871-4de54d802dc5-00011.parquet
    │   ├── 00000-0-84b83e87-0e98-48da-8871-4de54d802dc5-00511.parquet
    │   └── 00000-0-84b83e87-0e98-48da-8871-4de54d802dc5-00512.parquet
    └── metadata
        ├── 6785c966-67e3-43e0-876d-cfc2b77424b4-m0.avro
        ├── c4f04e0f-5f1d-4cd3-a5eb-4f423390011d-m0.avro
        ├── snap-1060385011870418792-1-df87d81d-004f-44d6-acca-1c77e5383647.avro
        ├── snap-1125901484026564419-1-c8e6142a-4702-4bf9-bb6c-937261910d39.avro
        ├── snap-1465929231731371144-1-cd480baf-a496-4f69-bb11-379299782e7a.avro
        ├── snap-1535675730396165219-1-eddfe40e-27bd-4a7a-97b0-191da77d4019.avro
        ├── snap-2621077481890393128-1-fdb33dc2-97a9-4472-bda4-fe0192a983c4.avro
        ├── snap-2886091127939856900-1-94d854db-2081-43b4-9bb3-11f9d0377503.avro
        ├── snap-3343920335928350948-1-19669bbb-7b82-4218-83ea-05c90429ff01.avro
        ├── snap-3566691522613506207-1-59e74ad7-a32e-427f-83c1-640d98b58d24.avro
        ├── snap-3843624394887137001-1-fef2b9b7-b7de-4ece-951b-eb1856a2d195.avro
        ├── snap-4100501778549948477-1-6785c966-67e3-43e0-876d-cfc2b77424b4.avro
        ├── snap-4248879694079296194-1-441e1ce8-6a10-4ebc-82b4-7abf62bc385b.avro
        ├── snap-445137311357959788-1-4e97b44e-a626-402b-b6ca-613e5252ed15.avro
        ├── snap-4453685821727449894-1-a5d3ced5-9d98-419a-aeda-a89e0184aa91.avro
        ├── snap-4652826435458483424-1-144e1141-8da3-450d-ba4d-01858befea48.avro
        ├── snap-4827514150229893384-1-db19f736-209b-44b0-9a4a-a1ecb8532817.avro
        ├── snap-5160869656962357717-1-522bdf2b-fd9d-4c81-9995-6c598e3112a2.avro
        ├── snap-5328679998683573777-1-befea0d5-0312-41db-ab33-04d2f71aa29c.avro
        ├── snap-5468995844667874005-1-4c1db744-6eb6-4c62-a5ce-6162b64ed429.avro
        ├── snap-7392671775005889691-1-f0e79868-ae06-4fe8-9a8e-e0b9f2fe2c12.avro
        ├── snap-7448354638185933171-1-621e2364-508e-47bf-83d0-5c7d72d160c6.avro
        ├── snap-7449633500954413534-1-3c673f73-381e-4917-af09-ce06e75995ee.avro
        ├── snap-7808424372668354882-1-a874a13c-32cc-4b4b-ab45-3042cad872f8.avro
        ├── snap-8487607088527724113-1-86dbb914-c564-4841-a536-be834a09b09d.avro
        ├── snap-882048647352933559-1-c7d1058c-1d60-4624-b592-2d8c9f208946.avro
        ├── snap-9092189266221057431-1-c4f04e0f-5f1d-4cd3-a5eb-4f423390011d.avro
        ├── snap-9149158390097592825-1-fd9e8dd3-519c-4b48-b78c-181ea0fd2aaf.avro
        ├── v1.metadata.json
        ├── v10.metadata.json
        ├── v11.metadata.json
        ├── v12.metadata.json
        ├── v13.metadata.json
        ├── v14.metadata.json
        ├── v15.metadata.json
        ├── v16.metadata.json
        ├── v17.metadata.json
        ├── v18.metadata.json
        ├── v19.metadata.json
        ├── v2.metadata.json
        ├── v20.metadata.json
        ├── v21.metadata.json
        ├── v22.metadata.json
        ├── v23.metadata.json
        ├── v24.metadata.json
        ├── v25.metadata.json
        ├── v26.metadata.json
        ├── v27.metadata.json
        ├── v3.metadata.json
        ├── v4.metadata.json
        ├── v5.metadata.json
        ├── v6.metadata.json
        ├── v7.metadata.json
        ├── v8.metadata.json
        ├── v9.metadata.json
        └── version-hint.text

使用下面的 Flink SQL 语句查询表 all_users_sink 中的数据:

修改 MySQL 中表的数据,Iceberg 中的表 all_users_sink 中的数据也将实时更新:

(3.1) 在 db_1.user_1 表中插入新的一行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--- db_1
INSERT INTO db_1.user_1 VALUES (111,"user_111","Shanghai","123567891234","user_111@foo.com");

(3.2) 更新 db_1.user_2 表的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--- db_1
UPDATE db_1.user_2 SET address='Beijing' WHERE id=120;

(3.3) 在 db_2.user_2 表中删除一行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--- db_2
DELETE FROM db_2.user_2 WHERE id=220;

每执行一步,在 Flink Client CLI 中使用 SELECT * FROM all_users_sink 查询表 all_users_sink 来看到数据的变化。

从 Iceberg 的最新结果中可以看到新增了(db_1, user_1, 111)的记录,(db_1, user_2, 120)的地址更新成了 Beijing,且(db_2, user_2, 220)的记录被删除了,与我们在 MySQL 做的数据更新完全一致。

最后, 关闭所有容器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose down

接下来,将调研如何将Iceberg 与Hive、SparkSQL 整合,读取和分析Flink CDC写入Iceberg中的数据.

参考

  1. Iceberg 实践 | 基于 Flink CDC 打通数据实时入湖:https://jishuin.proginn.com/p/763bfbd5bdbe
  2. Flink CDC 系列 - 同步 MySQL 分库分表,构建 Iceberg 实时数据湖:https://developer.aliyun.com/article/841222
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
7b2美化-列表文章上浮效果
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/16
4480
7b2美化-列表文章上浮效果
7b2美化-首页添加导航会员区块
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/17
8070
WordPress网站B2主题会员展示模块
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/17
1.1K0
WordPress网站B2主题会员展示模块
7b2美化-添加好看的底部介绍
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/16
7100
7b2美化-添加好看的底部介绍
WordPress动漫图片主题cxudy模板代码
WordPress多功能CX-UDY图片主题是基于wordpress开源程序开发的简洁时常自适应图片模板,适用于各种图片写真类型、图片壁纸类、博客站、多媒体分享站等类型站点。图片主题效果演示http://m.bokequ.com/dongman/gc
博客趣
2024/02/14
4210
WordPress动漫图片主题cxudy模板代码
关于本博客皮肤样式配置
先向博客园申请开通博客 向博客园申请博客js权限 这两步谷歌吧, 我已经申请好了,没法截图 设置博客皮肤模板 否则下面css,js会跟其他模板不兼容 修改页面定制css代码 *,.Cal{paddin
iginkgo18
2020/09/27
5090
关于本博客皮肤样式配置
高质量编码-轨迹管理平台(CSS样式)
样式仿照百度地图鹰眼轨迹服务早期版本的web端轨迹管理台,地图和UI都使用了夜色风格。
MiaoGIS
2020/12/17
5250
高质量编码-轨迹管理平台(CSS样式)
7b2美化-首页添加动态北极熊搜索样式
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/16
7470
7b2美化-首页添加动态北极熊搜索样式
菜鸡博客开……开……开源了!
因为很多人找我要过博皮源码,所以本宝宝经过深思熟虑,最终决定把自己的源码分享给大家!
attack
2018/09/21
2.9K0
HTML5环形音乐播放器
通过 HTML5,音乐在网络上东山再起。添加音频文件就像插入图像那样简单,并且用户能在浏览器外播放音乐,从而实现惊人的音乐体验。<audio> 标签的推出使您不再需要外部音乐播放器,在网站上实现真正的声音融合。 随着 HTML5 的出现,发生了一些重大变化,特别是在音乐和音频方面。开发人员不再要求 web 冲浪者使用 Adobe Flash、Apple QuickTime 或 Microsoft Windows 媒体播放器等特殊的播放器。这意味着用户不必担心是否有最新的兼容插件(或任何播放器插件)。他们只需打开自己喜欢的浏览器并聆听能发出声音的任何内容,如音乐、有声读物、FX 声音效果或朋友和家人录制的消息。
业余草
2019/01/21
5.2K0
HTML5环形音乐播放器
一套简约漂亮的响应式博客园主题皮肤分享给你们
  最近在自己博客园逛的时候,总会有一个感觉,真是太丑了,然而又觉得自己暂时抽不出太多的时间来搭建自己的博客系统,上网一搜才发现,原来我们可以自定义博客的布局以及样式的,那我就在网上找到了一个哥们的自定义Hexo经典主题Ligt的CSS文件,然后根据自己的审美及需要来做改动后上传以此来使自己的博客看起来像是自己搭建的个人博客。因为我总觉得一个良好的界面才会给博友读下去的欲望,否则很恶心,连自己都这么觉得。下面我们就来分享这个替换步骤教程。
阿豪聊干货
2018/08/09
2.1K0
一套简约漂亮的响应式博客园主题皮肤分享给你们
Joe主题加大图
1.复制代码 2.修改index.php 3.修改post.php 4.增加css文件 5.引入css文件 6.站长总结
堡主
2023/03/04
6320
Joe主题加大图
7b2美化-首页添加导航区块
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/16
8490
主题hondsome折腾,css修改
主题hondsome折腾,css修改 ps:我现在已经没有使用hondsome主题了,不过依旧保留在后台。感情颇深。 代码如下: 加入到自定义css 或者创建css文件,在footer引入即可 //首页头像自动旋转// .thumb-lg{ width:130px; } .avatar{ -webkit-transition: 0.4s; -webkit-transition: -webkit-transform 0.4s ease-out; transition: tra
乐心湖
2020/07/31
1.1K0
底部关于我们美化代码
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/17
2.8K0
底部关于我们美化代码
分享一个自用emlog手机底部导航加样式代码
看到很多朋友都要这个手机端底部导航索性就分享了,这玩意其实我也不是不舍得发,是懒得而已 这玩意我都是扣别人的所以这个东西自己扣就行了,如果你不会扣那我赶紧我分享出来你也不会用。
用户8099761
2023/05/11
7580
7b2主题评论气泡
这个功能来自于https://github.com/515184405/barrage,版权归他所有。
小狐狸说事
2022/11/17
4140
7b2主题评论气泡
纯CSS3绘制的逼真,呆萌,超酷的CSS3动画纯CSS3人物行走动画 逼真炫酷CSS3动画纯CSS3绘制的小猫笑脸动画 超呆萌纯CSS3绘制可爱小男孩动画 超酷面部表情
纯CSS3人物行走动画 逼真炫酷CSS3动画 CSS3实在是太强大了,今天分享的CSS3动画非常神奇,它可以模拟人物行走,而且人物行走动画非常逼真。人物行走时的跨步动画时多张图片重叠实现的。有了这个
wblearn
2018/08/27
1.7K0
纯CSS3绘制的逼真,呆萌,超酷的CSS3动画纯CSS3人物行走动画 逼真炫酷CSS3动画纯CSS3绘制的小猫笑脸动画 超呆萌纯CSS3绘制可爱小男孩动画 超酷面部表情
Butterfly主题美化
在butterfly/source/css/创建一个universe.css文件。
ymktchic
2022/01/18
1.6K0
Butterfly主题美化
Typecho美化主题教程
但是现在我们会发现,整个网站的标签都变成了这样,那我们如何只让他在文章中出现呢? 在第一个代码块ol前面加上#post即可使用了。
回忆大大
2021/08/09
1.5K0
推荐阅读
相关推荐
7b2美化-列表文章上浮效果
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 介绍
  • 环境准备
  • 准备测试数据
    • 进入 MySQL 容器中:
    • 创建数据和表,并填充数据:
    • 在 Flink SQL CLI 中使用 Flink DDL 创建表:
    • 开启 checkpoint
    • 创建 MySQL 分库分表 source 表
    • 创建 Iceberg sink 表
    • 流式写入 Iceberg
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档