iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >使用flink1.17 实时同步数据(mysql到sqlserver 或 sqlserver 到sqlserver)
  • 444
分享到

使用flink1.17 实时同步数据(mysql到sqlserver 或 sqlserver 到sqlserver)

mysqlsqlserver数据库flink 2023-10-21 21:10:14 444人浏览 泡泡鱼
摘要

​ 介绍两种数据库用 flink1.17 做数据实时同步的操作。 第一种:Mysql 同步到 sqlserver 第二种:sqlserver 同步到 sqlserver 步骤一,环境的准备 准备一台有


介绍两种数据库flink1.17 做数据实时同步的操作。

第一种:Mysql 同步到 sqlserver
第二种:sqlserver 同步到 sqlserver

步骤一,环境的准备

准备一台有 java 环境的Centos系统的主机或虚拟机

下载 flink:

https://flink.apache.org/downloads/
在这里插入图片描述

下载 mysql、sqlserver 相关 jar
# flink cdc 读取源数据的jar包flink-sql-connector-mysql-cdc-2.4.0.jarflink-sql-connector-sqlserver-cdc-2.4.0.jar# flink jdbc 写数据的jar包,与 mssql 的驱动包flink-connector-jdbc-3.1.1-1.17.jarmssql-jdbc-9.4.1.jre8.jar 

以上jar下载地址:

# flink cdcHttps://repo1.Maven.org/maven2/com/ververica/# flink connectorhttps://repo1.maven.org/maven2/org/apache/flink/flink-connector-jdbc/# mssql jdbc 驱动https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/

将这些jar包放在 flink 的 lib 目录下在这里插入图片描述

启动 flink
# 转到 flink 的 bin目录下,执行 start-cluster.sh 启动 flink./start-cluster.sh

在这里插入图片描述
flink启动成功!

步骤二,数据库开启CDC(只需要对源数据库开启cdc)

1,mysql 的 cdc,需要开启 row 模式
以自建的 testcdc 数据库为例
在这里插入图片描述
创建test表,必须要有主键,如下图
在这里插入图片描述

开启数据库row模式,配置文件中修改,并重启数据库,如下图。
在这里插入图片描述
建议你安装 宝塔 面板对mysql数据库进行操作。

mysql配置完成!


2,sqlserver 的 cdc 需要代理支持

以 自建的 flinkcdc 数据库为例
在这里插入图片描述

-- 对当前数据库启用 CDCUSE [flinkcdc]  EXECUTE sys.sp_cdc_enable_db; -- 查看数据库是否启用cdcSELECT name,is_cdc_enabled FROM sys.databases WHERE is_cdc_enabled = 1;

在这里插入图片描述
创建需要cdc的表testcdc
在这里插入图片描述
表 testcdc 启用cdc

-- 启用cdcEXEC sys.sp_cdc_enable_table  @source_schema = 'dbo',  @source_name   = 'testcdc',  @role_name     = 'testRole',  -- 角色要赋予权限 @supports_net_changes = 0  -- 查看当前数据库表是否启用cdcSELECT name,is_tracked_by_cdc FROM sys.tables WHERE is_tracked_by_cdc = 1;EXEC sys.sp_cdc_help_change_data_capture

特别注意的时角色需要赋予权限,这里为了方便直接使用的是db_owner,并且要开启代理。
在这里插入图片描述
代理会自动部署相关作业,如下图。
在这里插入图片描述

sqlserver数据库的cdc完成!

步骤三,建立 flink 与 数据库 的连接

# 启动 flink 的 sql-client.sh./sql-client.sh

在这里插入图片描述
启动成功!如下图
在这里插入图片描述
建议cdc源映射关系

CREATE TABLE source ( id INT, name varchar(100), create_time date, PRIMARY KEY(id) NOT ENFORCED) WITH ( 'connector' = 'mysql-cdc', 'hostname' = '192.168.6.130', 'port' = '3306', 'username' = 'root', 'passWord' = 'root', 'database-name' = 'testcdc', 'table-name' = 'test' );

在这里插入图片描述

查看数据

select * from source;

在这里插入图片描述
建立目标映射,jdbc写数据

CREATE TABLE test ( id INT, name varchar(100), create_time date, PRIMARY KEY(id) NOT ENFORCED) WITH ('connector' = 'jdbc','url' = 'jdbc:sqlserver://192.168.6.1:1433;DatabaseName=flinkcdc','driver' = 'com.microsoft.sqlserver.jdbc.SQLServerDriver','username' = 'sa', 'password' = '你的数据库密码',  'table-name' = 'dbo.test');

在这里插入图片描述

步骤四,同步数据
insert into test(id,name,create_time)select id,name,create_time from source;

在这里插入图片描述
数据就从mysql源表 写入到 sqlserver 目标表中了(这里的目标表是在sqlserver中创建了一张名为test的表)。
在这里插入图片描述
同理,sqlserver 同步 到sqlserver 跟上面mysql 同步到 sqlserver是一样的。
只是 源 映射需要使用,如下:

 CREATE TABLE source( id INT, name varchar(100), create_time date, PRIMARY KEY(id) NOT ENFORCED) WITH ('connector' = 'sqlserver-cdc','hostname' = '192.168.6.1','port' = '1433','username' = 'sa', 'password' = '你的密码', 'database-name' = 'flinkcdc', 'table-name' = 'dbo.testcdc');

你也可以在flink的WEB页面查看同步job
在这里插入图片描述

Job ID: 881f141de6b8631395571a9d879e3e32

来源地址:https://blog.csdn.net/FrankHsiang/article/details/131848530

您可能感兴趣的文档:

--结束END--

本文标题: 使用flink1.17 实时同步数据(mysql到sqlserver 或 sqlserver 到sqlserver)

本文链接: https://www.lsjlt.com/news/434137.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作