Flink: Flink CDC 3.4.0 实时同步MYSQL8
单机实验环境: Oracle Linux 7.9 + MYSQL 8.0.37 + Flink 1.20.0 + Flink CDC 3.4.0 + JDK17.0.12
测试用名: ORACLE
一、安装 JAVA
1、解压安装 JAVA
将从JAVA官方网站下载的JAVA文件(jdk-17.0.12_linux-x64_bin.tar.gz)上传LINUX系统的/home/oracle/soft 目录,
使用命令 解压到本地目录
# cd /home/oracle/soft
# tar -xzf jdk-17.0.12_linux-x64_bin.tar.gz # 解压后在当前文件夹看到新解压出来的文件夹 jdk-17.0.12
#mv jdk17.0.12/ /opt/jdk17.0.12 # 移动到指定安装目录下
# chmod -R 755 /opt/jdk17.0.12 # 设置文件夹访问权限 当前用户具有读写执行权限,其他用户具有读、执行权限。
2、在用户根目录下配置文件(.bash_profile)后 添加
#vim /home/oracle/.bash_profile
export JAVA_HOME=/opt/jdk-17.0.12 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
3. 生效 用户配置文件
# source .bash_profile
4、查看 JAVA 版本
$ java -version
结果显示:
java version "17.0.12" 2024-07-16 LTS
二、安装 FLINK 1.20.0 、 FLINK-CDC
1、解压 flink-1.20.0-bin-scala_2.12.tgz
#cd /home/oracle/soft
#tar -xvf flink-1.20.0-bin-scala_2.12.tgz #解压到当前目录,当前目录看到有 flink-1.20.0 目录
#chmod -R 755 flink-1.20.0
1.1、 修改配置conf.yaml
把 rest :bind-address: localhost 改为
bind-address: 0.0.0.0 ,使它可以在其他客户端访问。
2、 解压FLINK-CDC(flink-cdc-3.4.0-bin.tar.gz)
#tar -xvf flink-cdc-3.4.0-bin.tar.gz #解压到当前目录,当前目录看到有 flink-cdc-3.4.0 目录
#chmod -R 755 flink-cdc-3.4.0
3、配置FLINK \ FLINK CDC 环境变量,
在用户根目录下配置文件(.bash_profile)添加
# vi /home/oracle/.bash_profile
4、生效配置文件
#source /home/oracle/.bash_profile
5、 启动 FLINK 1.20.0
# cd /home/oracle/soft/flink-1.20.0
# ./bin/start-cluster.sh
启动成功。
6、输入 HTTP://LOCALHOST:8081 看主页。
三、下载 flink-connector-jdbc-mysql-3.3.0.jar 驱动
1、在APACHE官网 下载 flink-connector-jdbc 源代码 https://flink.apache.org/downloads/
下载flink-connector-jdbc-3.3.0-src.tgz 后
解压出来,
在安装有 MAVEN 3.8.1 + JAVA 11 以上版本的主机 环境里
在
flink-connector-jdbc-3.3.0 目录 下 运行
#mvn -clean
# mvn -package 生成 jar 包。
2、将生成的
flink-connector-jdbc-core-3.3.0.jar、flink-connector-jdbc-mysql-3.3.0.jar、flink-connector-jdbc-3.3.0.jar
包放入 flink-1.20.0/lib 里。
2.1 下载 flink-sql-connector-mysql-cdc-3.3.0.jar ,mysql-connector-java-8.0.30.jar或以上版本 包放入 flink-1.20.0/lib 里。
四、数据表同步(MYSQL TO MYSQL),源表(CDC_SOURCE.PLAYER_SOURCE)、目标表 (CDC_TARGET.PLAYER_TARGET)
1、创建 两个测试数据库(MYSQL8.0.37):
CREATE DATABASE IF NOT EXISTS `cdc_source` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT ENCRYPTION='N' ;
CREATE DATABASE IF NOT EXISTS `cdc_target` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT ENCRYPTION='N' ;
2、创建MYSQL8 表, 建表详细 代码:
create table cdc_source.player_source(
`id` int(11),
`name` varchar(255),
PRIMARY KEY (`id`)
);
create table cdc_target.player_target(
`id` int(11),
`name` varchar(255),
PRIMARY KEY (`id`)
);
3、flink sql-client 脚本,并保存 为source2sink.sql
4、创建FLINK-CDC 任务
# cd /home/oracle/soft/flink-1.20.0
# ./bin/start-cluster.sh #启动FLINK 服务
# ./bin/sql-client.sh -i /home/oracle/soft/source2sink.sql
# insert into sink_dest select * from source_dest ;
3、在FLINK-SQL添加任务
4、 在FLINK 中查新任务 状态 。
。
五、验证同步 情况