前情提要
同步mysqlA中表AA 至 mysqlB中表BA,此处读采用mysql-cdc,写采用JDBC
资源准备
-
下载相应jar包
- flink-sql-connector-mysql-cdc-2.3.0.jar
- flink-connector-jdbc_2.12-1.14.6.jar
- mysql-connector-java-8.0.30.jar
将下载好的包,复制到flink-1.16.1/lib
-
数据库开启GTID
找到my.cnf,在
[mysqld]中加入如下信息[mysqld] …… server-id=1 log-bin=mysql-bin binlog-format=row gtid-mode=ON enforce-gtid-consistency=true log-slave-updates=ON -
准备数据
mysqlA中信息
CREATE DATABASE test_db; USE test_db; CREATE TABLE orders ( order_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, order_date DATETIME NOT NULL, customer_name VARCHAR(255) NOT NULL, price DECIMAL(10, 5) NOT NULL, product_id INTEGER NOT NULL, order_status BOOLEAN NOT NULL -- Whether order has been placed ) AUTO_INCREMENT = 10001; INSERT INTO orders VALUES (default, '2020-07-30 10:08:22', 'Jark', 50.50, 102, false), (default, '2020-07-30 10:11:09', 'Sally', 15.00, 105, false), (default, '2020-07-30 12:00:30', 'Edward', 25.25, 106, false);mysqlB中信息
CREATE DATABASE test_dw; USE test_dw; CREATE TABLE orders ( order_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, order_date DATETIME NOT NULL, customer_name VARCHAR(255) NOT NULL, price DECIMAL(10, 5) NOT NULL, product_id INTEGER NOT NULL, order_status BOOLEAN NOT NULL -- Whether order has been placed )
离线安装Flink 文档
-
安装java 11
# mac 安装 java11 $ brew install java11 $ sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk $ java -version openjdk version "11.0.16.1" 2022-08-12 OpenJDK Runtime Environment Homebrew (build 11.0.16.1+0) OpenJDK 64-Bit Server VM Homebrew (build 11.0.16.1+0, mixed mode) -
下载 release 1.16.1 并解压
$ tar -xzf flink-1.16.1-bin-scala_2.12.tgz $

文章介绍了如何利用FlinkSQL结合MySQL的变更数据捕获(CDC)功能从mysqlA的表AA同步数据到mysqlB的表BA。过程中涉及了配置Flink环境、启用MySQL的GTID模式、设置checkpoint间隔以及创建源表和目标表的FlinkSQL语句,最终实现了通过JDBC写入mysqlB的过渡表dw_orders来完成数据同步。
最低0.47元/天 解锁文章
438

被折叠的 条评论
为什么被折叠?



