一、 环境信息

1.1 硬件信息

  1. CPU :48C
  2. CPU型号x86_64
  3. 内存 :185GB

1.2 软件信息

  1. 系统 :CentOS
  2. Apahce Doris版本 :2.0.2
  3. Mysql版本:5.7.36
  4. Flink版本:1.17.1
  5. Flink-Doris-Connector版本:1.5

二、 流程介绍

Mysql万表同步至Doris,主要是通过Flink计算引擎基于Doris社区研发Flink Doris Connector 实现的。无需提前建表,当Flink任务启动后,Flink Doris Connector自动识别对应的Doris表是否存在,不存在自动创建Doris表,如果存在则直接启动同步任务
在这里插入图片描述

三、 前提概要

3.1 安装部署

Doris/Flink/Mysql的安装部署流程可以根据版本自行Google。

  1. Doris下载地址Doris下载地址
  2. Flink下载地址Flink下载地址
  3. MySQL包下载地址:MySQL包下载地址

3.2 JAR包准备

3.2.1 数据源

Flink源端读取MySQL数据连接器,可通过该地址下载flink-sql-connectormysqlcdc-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 

四、快速体验

例如单表同步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.keycolumn=database.table:column,database.table1.column解决

在这里插入图片描述

5.3 CKP ON HDFS连接异常

使用hadoop作为checkpoint时报如下异常

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权限异常

使用默认root脚本时,如果出现如下异常:

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进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注