danan
发布于 2024-01-22 / 6 阅读
0
0

整库同步MySQL入Doris

1 环境准备

技术栈

版本

Flink

1.17.2

FlinkCDC

2.4.2

Doris

2.0.3

  • 修改config.sh配置文件,添加以下内容

export HADOOP_CLASSPATH=`hadoop classpath`
  • 修改flink-conf.yml配置文件,添加以下内容

env.java.opts.all: -Dfile.encoding=UTF-8 //解决CDC采集MySQL中文乱码问题
  • ${FLINK_HOME}/lib下添加相应的Jar包

flink-doris-connector-1.17-1.5.1.jar
flink-sql-connector-mysql-cdc-2.4.2.jar

2 同步步骤

2.1 整库同步

/opt/module/flink-1.17.2/bin/flink run-application -t yarn-application \
 -Dexecution.checkpointing.interval=10s \
 -Dparallelism.default=1 \
 -c org.apache.doris.flink.tools.cdc.CdcTools \
 lib/flink-doris-connector-1.17-1.5.1.jar \
 mysql-sync-database \
 --database doris_crud_test \
 --mysql-conf hostname=hadoop102 \
 --mysql-conf username=root \
 --mysql-conf password=123456 \
 --mysql-conf database-name=edu2023 \
 --sink-conf fenodes=hadoop102:8029 \
 --sink-conf username=root \
 --sink-conf password=123456 \
 --sink-conf jdbc-url=jdbc:mysql://hadoop102:9030 \
 --sink-conf sink.label-prefix=label2 \
 --table-conf replication_num=2;

2.2 单表同步

 /opt/module/flink-1.17.2/bin/flink run-application -t yarn-application \
 -Dexecution.checkpointing.interval=10s \
 -Dparallelism.default=1 \
 -c org.apache.doris.flink.tools.cdc.CdcTools \
 lib/flink-doris-connector-1.17-1.5.1.jar \
 mysql-sync-database \
 --database doris_crud_test \
 --mysql-conf hostname=hadoop102 \
 --mysql-conf username=root \
 --mysql-conf password=123456 \
 --mysql-conf database-name=test \
 --including-tables "cart_info" \
 --sink-conf fenodes=hadoop102:8029 \
 --sink-conf username=root \
 --sink-conf password=123456 \
 --sink-conf jdbc-url=jdbc:mysql://hadoop102:9030 \
 --sink-conf sink.label-prefix=label3 \
 --table-conf replication_num=2;

3 性能测试

  1. 查询:1700W数据,3秒

  2. 写入:1700W数据,20分钟

  3. 修改:

  4. 删除:

补充

a.多数据源往同一张表写数据

注意:多数据源不会同时处理同一条数据(修改/删除),各数据源的机构代码不同

Doris:使用官方提供的包,必须保证源表字段名和Doris中的字段名一模一样,包括大小写(底层是JSON),实际业务场景字段名大小写不一样,需要修改官方的flink-doris-connector包

Paimon:官方提供的包就,支持多数据源往同一张表写数据

b.数据湖 vs Doris

数据湖(Hudi/Paimon/IceBerg)

Doris

部署方面

基于HDFS,手动部署

Doris Manager全自动化部署

小文件问题

存在小文件问题

查询服务

借助Hive对外提供查询服务

MySQL协议,且自带WEB UI

使用成本

使用Hive语法

基本兼容MySQL语法

集成能力

集成大部分主流数据库,实现跨库JOIN查询

字段问题

不支持名字以数字开头的字段(Hudi不支持)

支持以数字开头的字段

漏数问题

存在漏数据甚至漏字段问题

版本信息

Hudi 0.14 / Paimon 0.7

2.0.3

数据链路

复杂,需要额外维护 HDFS / Hive 等组件

内部流转

复杂查询能力

借助Hive(慢)

OLAP(快)

数据统计

磁盘大小:HDFS(不可判断重复数据文件)
数据条数:借助Hive,所有表SELECT COUNT(*)

磁盘大小:直接记录
数据条数:直接记录

官方支持的整库CDC同步

Paimon:MySQL
Hudi:官方未提供,第三方(Dinky)提供

MySQL/SqlServer/Oracle


评论