【Apache Doris】一键实现万表MySQL整库同步 | 快速体验
【Apache Doris】一键实现万表MySQL整库同步 | 快速体验)
- 一、 环境信息
- 1.1 硬件信息
- 1.2 软件信息
- 二、 流程介绍
- 三、 前提概要
- 3.1 安装部署
- 3.2 JAR包准备
- 3.2.1 数据源
- 3.2.2 目标源
- 3.3 脚本模版
- 四、快速体验
- 五、常见问题
- 5.1 Mysql通信异常
- 5.2 MySQL无Key同步异常
- 5.3 CKP ON HDFS连接异常
- 5.4 CKP ON HDFS权限异常
- 5.5 其它参考官方【Flink Doris Connector】QA
一、 环境信息
1.1 硬件信息
- CPU :48C
- CPU型号:x86_64
- 内存 :185GB
1.2 软件信息
- 系统 :CentOS
- Apahce Doris版本 :2.0.2
- Mysql版本:5.7.36
- Flink版本:1.17.1
- Flink-Doris-Connector版本:1.5
二、 流程介绍
Mysql万表同步至Doris,主要是通过Flink计算引擎、基于Doris社区研发的Flink Doris Connector 实现的。无需提前建表,当Flink任务启动后,Flink Doris Connector 会自动识别对应的Doris表是否存在,不存在则自动创建Doris表,如果存在则直接启动同步任务。

三、 前提概要
3.1 安装部署
Doris/Flink/Mysql的安装部署流程可以根据版本自行Google。
- Doris下载地址:Doris下载地址
- Flink下载地址:Flink下载地址
- MySQL包下载地址:MySQL包下载地址
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连接异常
使用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整库同步 | 快速体验 分享至此结束,体验过程中若遇到问题欢迎留言交流
相关文章:
【Apache Doris】一键实现万表MySQL整库同步 | 快速体验
【Apache Doris】一键实现万表MySQL整库同步 | 快速体验) 一、 环境信息1.1 硬件信息1.2 软件信息 二、 流程介绍三、 前提概要3.1 安装部署3.2 JAR包准备3.2.1 数据源3.2.2 目标源 3.3 脚本模版 四、快速体验五、常见问题5.1 Mysql通信异常5.2 MySQL无Key同步异常5…...
35.逻辑运算符
目录 一.什么是逻辑运算符 二.C语言中的逻辑运算符 三.逻辑表达式 三.视频教程 一.什么是逻辑运算符 同时对俩个或者俩个以上的表达式进行判断的运算符叫做逻辑运算符。 举例:比如去网吧上网,只有年满十八周岁并且带身份证才可以上网。在C语言中如果…...
ASP.NET Core 启用CORS
浏览器的安全阻止一个域的本地页面请求另外不同域的本地页面,这个限制叫同源策略,这个安全特性用来阻止恶意站点从别的网站读取数据 例如假如我有一个页面叫A.html https://foo.example/A.html 现在页面A.html有一个ajax代码尝试读取B.html的HTML的源…...
io.lettuce.core.RedisCommandExecutionException
io.lettuce.core.RedisCommandExecutionException: ERR invalid password ERR invalid password-CSDN博客 io.lettuce.core.RedisCommandExecutionException /** Copyright 2011-2022 the original author or authors.** Licensed under the Apache License, Version 2.0 (the…...
vue3 导出数据为 excel 文件
文章目录 安装插件封装组件 -- Export2Excel.js多表封装界面使用 -- 数据处理成二维数组更多 菜鸟最近做了一个需求,就是需要上传表单并识别,然后识别出来的内容要可以修改,然后想的就是识别内容变成 form 表单,所以并没有使用 Sp…...
PyQt6简介
锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计12条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…...
某60区块链安全之未初始化的存储指针实战二学习记录
系列文章目录 文章目录 系列文章目录未初始化的存储指针实战二实验目的实验环境实验工具实验原理实验内容实验过程EXP利用 未初始化的存储指针实战二 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约未初始化的存储指针漏洞 找到合约漏洞进行分析并形成利用 实验…...
软件工程第十二周
软件作坊、软件危机、软件过程控制、重型控制、敏捷、DevOps 这些术语概括了软件开发历史和实践中的几个重要概念和阶段。让我们逐一解析它们: 软件作坊(Software Craftsmanship):这是软件开发的早期模式,强调个人技能…...
electron 问题记录
23年11月24 electron项目npm install 卡在一个地方不动 原因:主要是 install electron 会卡住 解决方法: # 先解决install electron卡死 npm install -g cnpm --registryhttps://registry.npmmirror.com cnpm install electron# 然后下载其他依赖 np…...
nodejs+vue+python+PHP+微信小程序-留学信息查询系统的设计与实现-安卓-计算机毕业设计
1、用户模块: 1)登录:用户注册登录账号。 2)留学查询模块:查询学校的入学申请条件、申请日期、政策变动等。 3)院校排名:查询国外各院校的实力排名。 4)测试功能:通过入学…...
JWT和Token之间的区别
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏:…...
UserRole
Qt::UserRole 是 Qt::ItemDataRole 枚举中的一个成员,用于表示自定义数据角色(Data Role)的起始值。 在 Qt 中,Qt::ItemDataRole 枚举用于标识项(Item)中不同类型的数据。这些数据角色包括 Qt::DisplayRol…...
java学习part10 this
90-面向对象(进阶)-关键字this调用属性、方法、构造器_哔哩哔哩_bilibili 1.java的this java的this性质类似cpp的this, 但它是一种引用,所以用 this. xxx来调用。 this代表当前的类的实例,所以必须和某个对象结合起来使用,不能…...
Spring Cloud + Nacos 项目启动失败【No spring.config.import property has been defined】
在 Spring Cloud 项目使用 bootstrap.yaml 配置文件,添加 nacos 等相关参数配置,启动服务抛入如下异常: org.springframework.cloud.commons.ConfigDataMissingEnvironmentPostProcessor$ImportException: No spring.config.import set ... …...
CANopen协议【SDO】
SDO: SDO是读写单个寄存器。主要用于配置伺服驱动器参数。 1 收发功能: //public unsafe struct VCI_CAN_OBJ //CAN数据帧 【单帧对象】//{// public uint ID;// 帧ID。 【11bit】数据右对齐。 详情请参照: 《8.附件1࿱…...
9-什么是迭代器,生成器,装饰器、django的信号用过吗?如何用,干过什么、什么是深拷贝,什么是浅拷贝,如何使用、slice操作符和list构造函数
1 什么是迭代器,生成器,装饰器 2 django的信号用过吗?如何用,干过什么 3 什么是深拷贝,什么是浅拷贝,如何使用 3.1 浅拷贝 3.2 深拷贝 3.3 扩展(slice操作符和list构造函数) 1 什么是迭代器,生成…...
RabbitMQ之发送者(生产者)可靠性
文章目录 前言一、生产者重试机制二、生产者确认机制实现生产者确认(1)定义ReturnCallback(2)定义ConfirmCallback 总结 前言 生产者重试机制、生产者确认机制。 一、生产者重试机制 问题:生产者发送消息时࿰…...
乐得瑞LDR6020 VR串流线方案:实现同时充电传输视频信号
VR(Virtual Reality),俗称虚拟现实技术,是一项具有巨大潜力的技术创新,正在以惊人的速度改变我们的生活方式和体验,利用专门设计的设备,如头戴式显示器(VR头盔)、手柄、定…...
【libGDX】Mesh纹理贴图
1 前言 纹理贴图的本质是将图片的纹理坐标与模型的顶点坐标建立一一映射关系。纹理坐标的 x、y 轴正方向分别朝右和朝下,如下。 2 纹理贴图 本节将使用 Mesh、ShaderProgram、Shader 实现纹理贴图,OpenGL ES 的实现见博客 → 纹理贴图。 DesktopLauncher…...
基线扫描tomcat安全加固-检查是否支持HTTPS等加密协议
背景:基线扫描时,docker镜像中的tomcat在检查是否支持HTTPS等加密协议这一项上未通过。 思路:先通过JDK自带的keytool工具生成证书,再从tomcat的server.xml配置文件中增加配置。 我不确定不同版本的JDK生成的证书是否可以通用&a…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
