一、 环境信息
1.1 硬件信息
1.2 软件信息
二、 流程介绍
Mysql万表同步至Doris,主要是通过Flink计算引擎、基于Doris社区研发的Flink Doris Connector 实现的。无需提前建表,当Flink任务启动后,Flink Doris Connector 会自动识别对应的Doris表是否存在,不存在则自动创建Doris表,如果存在则直接启动同步任务。
三、 前提概要
3.1 安装部署
Doris/Flink/Mysql的安装部署流程可以根据版本自行Google。
3.2 JAR包准备
3.2.1 数据源
Flink源端读取MySQL数据的连接器,可通过该地址下载flink-sql-connector–mysql–cdc-2.4.1.jar:
mysql-cdc-2.4.1下载地址
3.2.2 目标源
Flink目标端写Doris的Flink Doris Connector ,可通过该地址获取:
flink-doris-connector下载地址
3.3 脚本模版
./bin/flink run
-Dexecution.checkpointing.interval=10s
-Dparallelism.default=1
-c org.apache.doris.flink.tools.cdc.CdcTools
lib/flink-doris-connector-1.17-1.5.0-SNAPSHOT.jar
mysql-sync-database
--database doris_db
--mysql-conf hostname= 127.0.0.1
--mysql-conf port= 3306
--mysql-conf username= root
--mysql-conf password= root
--mysql-conf database-name= mysql_db
--mysql-conf scan.startup.mode=initial
--including-tables "test.*"
--sink-conf fenodes= 127.0.0.1:8030
--sink-conf username=root
--sink-conf password=root
--sink-conf jdbc-url=jdbc:mysql://127.0.0.1:9030
--sink-conf sink.label-prefix=label
--table-conf replication_num=1
- –job–name Flink任务名称, 非必需。
- -Dexecution.checkpointing.interval checkpoint时间间隔,实际task中是需要checkpoint后才执行数据写入
- –database 同步到Doris的数据库名。
- –mysql–conf MySQL CDCSource 配置,例如–mysql–conf hostname=127.0.0.1 ,可以在这里查看 所有配置MySQL-CDC,其中hostname/username/password/database–name 是必需的。
- –including–tables 需要同步的MySQL表,可以使用“|” 分隔多个表,并支持正则表达式。 比如–including–tables “test.*” 就是同步所有以test开头的表。
- –sink-conf Doris Sink 的所有配置,可以在这里查看完整的配置项。
- –table-conf Doris表的配置项,即properties中包含的内容。 例如 —table-conf replication_num=1
四、快速体验
例如单表同步MySQL中Star Schema Benchmark的part零件信息表,共1600000条记录。
./bin/flink run
-Dexecution.checkpointing.interval=10s
-Dparallelism.default=1
-c org.apache.doris.flink.tools.cdc.CdcTools
lib/flink-doris-connector-1.17-1.5.0-SNAPSHOT.jar
mysql-sync-database
--database ssb_test
--mysql-conf hostname=172.21.16.12
--mysql-conf port=23306
--mysql-conf username=root
--mysql-conf password=123456
--mysql-conf database-name=ssb_test
--mysql-conf scan.startup.mode=initial
--mysql-conf scan.incremental.snapshot.chunk.key-column=ssb_test.part:p_partkey
--including-tables "part"
--sink-conf fenodes=10.16.10.6:8032
--sink-conf username=root
--sink-conf password=root
--sink-conf jdbc-url=jdbc:mysql://10.16.10.6:9034
--sink-conf sink.label-prefix=label05
--table-conf replication_num=1
在FLINK_HOME执行上述命令后,WEB UI中会新增相应Job。
查看taskmanager日志可以发现,task会先对mysql主键做切分,然后再根据ckp的时间间隔按批写入Commit(默认2pc提交)。
默认环境10秒ckp下,单并发写入只需3min左右即可同步完160W数据,且单副本数据压缩率达到90%!!!
五、常见问题
5.1 Mysql通信异常
不用单独加mysql驱动包;这个问题可能是因为mysql信息填写错误或驱动包不兼容导致。
5.2 MySQL无Key同步异常
mysql源表没有设置主键,可以在脚本中指定–mysql-conf scan.incremental.snapshot.chunk.key–column=database.table:column,database.table1.column… 解决。
5.3 CKP ON HDFS连接异常
Caused by: java.net.ConnectException: Call From hadoop1/ip to hadoop1:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
这类异常一般是由于网络原因或端口配置错误导致,可以先进行telnet ip port看是否通,再进行调整处理。
5.4 CKP ON HDFS权限异常
Caused by: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x
这类异常一般切换至对应用户或者授权即可,这个case可以切换至hadoop用户起 或 将root用户加到hdfs用户组中即可。
5.5 其它参考官方【Flink Doris Connector】QA
【Apache Doris】一键实现万表MySQL整库同步 | 快速体验 分享至此结束,体验过程中若遇到问题欢迎留言交流
原文地址:https://blog.csdn.net/ith321/article/details/134327503
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_16359.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!