0


基于Flink SQL CDC Mysql to Mysql数据同步

基于Flink SQL CDC Mysql to Mysql数据同步

Flink CDC有两种方式同步数据库:

  • 一种是通过FlinkSQL直接输入两表数据库映射进行数据同步,缺点是只能单表进行同步;
  • 一种是通过DataStream开发一个maven项目,打成jar包上传到服务器运行。

本方案使用FlinkSQL方法,同步两表中的数据。
其中Flink应用可以部署在具有公网IP的服务器上,同时可以连接其他局域网中服务器的数据进行同步工作,如不需要操作管理页面,则不对服务器IP有要求。

一、 服务器部署Flink

将Flink压缩包解压到服务器指定位置
Flink下载地址,点击进入
在这里插入图片描述

二、 配置Flink

1.配置端口号

进入到 根目录\conf\flink-conf.yaml文件,找到rest.port,将其配置为已开放的端口
在这里插入图片描述

2.配置rest.bind地址

找到rest.port位置,将其参数localhost改为0.0.0.0,不修改会导致管理页面无法正常打开。
在这里插入图片描述

三、 上传两个jar包到lib中

上面的是同步到目标mysql库的连接器
下面的是源mysql的连接器
下载地址:
flink-connector-jdbc:jar:3.0.0-1.16
flink-sql-connector-mysql-cdc:jar:2.3.0
在这里插入图片描述

四、 启动服务

进入到bin文件夹中

1. 运行start-cluster.sh
2. 运行sql-client.sh进入到FlinkSQL模式

创建两个表映射、一个启动任务指令

1)源数据库映射

createtable ny_energy_data_source
(
    id             bigint,
    enterprise_id  bigint,
    use_time       timestamp,
    date_type      int,
    attribute_id   bigint,PRIMARYKEY(`id`)NOT ENFORCED
)WITH('connector'='mysql-cdc','hostname'='ip地址','port'='3306','username'='用户名','password'='密码','database-name'='源数据库名','table-name'='表名');

2)目标数据库映射

createtable ny_energy_data_target
(
    id             bigint,
    enterprise_id  bigint,
    use_time       timestamp,
    date_type      int,
    attribute_id   bigint,PRIMARYKEY(`id`)NOT ENFORCED
)WITH('connector'='jdbc','url'='jdbc:mysql://IP地址:3306/库名?serverTimezone=UTC','username'='用户名','password'='密码','table-name'='表名','driver'='com.mysql.cj.jdbc.Driver','scan.fetch-size'='200');

3)启动任务
从ny_energy_data_source到ny_energy_data_target,先全量后增量

insertinto ny_energy_data_target select*from ny_energy_data_source;

五、 进入到http://IP:8081(默认端口),查看任务运行情况

在这里插入图片描述

标签: flink sql mysql

本文转载自: https://blog.csdn.net/weixin_43778515/article/details/129331056
版权归原作者 大可iii 所有, 如有侵权,请联系我们删除。

“基于Flink SQL CDC Mysql to Mysql数据同步”的评论:

还没有评论