一键实现Oracle数据整库同步至 Apache Doris的验证实录

看到一键实现万表 MySQL 整库同步至 Apache Doris这篇文章(一键实现万表 MySQL 整库同步至 Apache Doris (qq.com))就下载flink-doris-connector代码验证了一下,并记录整理分享给大家。当我下载的代码时支持mysql cdc,oracle cdc和pg;目前最新代码也支持微软的sql server 的cdc 。

体系结构

oracle -> flink-doris-connector -> doris db

flink-doris-connector 工具build 好就是一个jar包,放入flink的lib里面就能用

用它抽取oracle cdc 日志,同步给下游doris 集群

版本说明

服务器是jdk11,maven3

Flink1.16.2

flink-doris-connector-1.16-1.5.0-SNAPSHOT 这个在github主分支下载编译

build flink-doris-connector 是下载apache/doris-flink-connector: Flink Connector for Apache Doris (github.com) 项目主分支,用jdk11 maven3编译打包的

Oracle 12c,Oracle 11g r2也试过可以的

Doris 2.0 必须用最新版,支持新数据类型,工具兼容能使用。

部署doris集群

得有docker环境,配好国内镜像,安装了compose-compose,硬盘要快吞吐量要够,性能才好。下面是docker run脚本,测试环境可以一个fe 3个be,就是be那个脚本 改一下run 出来三个be节点

docker run -itd \
--name=fe \
--env FE_SERVERS="fe1:192.168.130.177:9010" \
--env FE_ID=1 \
-p 8030:8030 \
-p 9030:9030 \
-v /home/dockerapps/doris/fe/doris-meta:/opt/apache-doris/fe/doris-meta \
-v /home/dockerapps/doris/fe/log:/opt/apache-doris/fe/log \
--net=host \
apache/doris:2.0.0_alpha-fe-x86_64
​
​
docker run -itd \
--name=be \
--env FE_SERVERS="fe1:192.168.130.177:9010" \
--env BE_ADDR="192.168.130.177:9050" \
-p 8040:8040 \
-v /home/dockerapps/doris/be/storage:/opt/apache-doris/be/storage \
-v /home/dockerapps/doris/be/log:/opt/apache-doris/be/log \
--net=host \
apache/doris:2.0.0_alpha-be-x86_64

部署flnk集群

主要有三种方式 伪集群,standalone 和yarn方式。第三种方式还得搭hadoop集群不好推广,此处总结standalone方式。

开三到6个集群节点,域名统一互相ssh免密登陆和时间同步(略)

用清华镜像下载 https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.16.2/flink-1.16.2-bin-scala_2.12.tgz

传入master节点 解压

进入conf目录中,master 改你指定master节点的域名

Workers 添加每个集群节点的域名

flink-conf.yaml改一下

# JobManager节点地址.

jobmanager.rpc.address: 主节点域名

jobmanager.bind-host: 0.0.0.0

rest.address: 主节点域名

rest.bind-address: 0.0.0.0

# TaskManager节点地址.需要配置为当前机器名

taskmanager.bind-host: 0.0.0.0

taskmanager.host: 部署节点的域名

lib中添加额外的jar包

flink-doris-connector-1.16-1.5.0-SNAPSHOT.jar flink-shaded-force-shading-16.1.jar flink-shaded-guava-30.1.1-jre-16.1.jar flink-sql-connector-oracle-cdc-2.4.1.jar mysql-connector-java-8.0.28.jar ojdbc8-12.2.0.1.jar orai18n-12.2.0.1.jar

flink-doris-connector-1.16-1.5.0-SNAPSHOT.jar :https://github.com/apache/doris-flink-connector.git下载主分支自己个build ,改下pom 参数

<flink.version>1.16.2</flink.version> <flink.minor.version>1.16</flink.minor.version>

如果你部署flink1.17 就改对应的参数然后build

flink-sql-connector-oracle-cdc-2.4.1.jar 这个是 flinkcdc的jar包可以在 下载Central Repository: (maven.org) 当然你得知道这个jar包的pom坐标,简单的你就在https://mvnrepository.com/ 搜索然后点下载jar包

最后三个是数据库jdbc驱动和语言包

flink-doris-connector一键部署工具

apache/doris-flink-connector: Flink Connector for Apache Doris (github.com)

clone 或者下载主分支,然后自己build 我用的是jdk11 maven3

flink-doris-connector-1.16-1.5.0-SNAPSHOT.jar 这个上传到flink的lib里

运行命令脚本

bin/flink run \
     -Dexecution.checkpointing.interval=10min \
     -Dexecution.checkpointing.tolerable-failed-checkpoints=100 \
     -Drestart-strategy=fixed-delay \
     -Drestart-strategy.fixed-delay.attempts=2147483647 \
     -Dexecution.checkpointing.min-pause=3000 \
     -Dparallelism.default=1 \
     -c org.apache.doris.flink.tools.cdc.CdcTools \
     ./lib/flink-doris-connector-1.16-1.5.0-SNAPSHOT.jar \
     oracle-sync-database \
     --database HISDB \
     --oracle-conf hostname=192.168.100.175 \
     --oracle-conf port=1521 \
     --oracle-conf username=hisdb \
     --oracle-conf password="hisdb" \
     --oracle-conf database-name=ORCL \
     --oracle-conf schema-name=HISDB \
     --oracle-conf debezium.database.history.store.only.captured.tables.ddl=true \
     --including-tables "PAINBILLDETAIL|DOCITEMDETAIL|CHARGEDETAIL|LABTESTDETAILDEL|IOWHDETAIL|QUERYMEDICAIO|ORDERSCOSTS|CLINICINVOICE|PRE_STOCKPILE|DOCITEMSHEET|MEDDISPENSE|LABTESTDETAIL|ORDERS|CLINICPAYMAYRECORD|CHARGESHEET|REGISTER|IOWHSHEET|CDBASICSICK|SYSTEMLOG|LABTESTSHEET|DIAGNOSIS|EXAMDETAIL|CASEPAINFEE|PAININVOICE|EXAMSHEET|EXPIOWHDETAIL" \
     --sink-conf fenodes=192.168.130.177:8030 \
     --sink-conf username=root \
     --sink-conf password=\
     --sink-conf jdbc-url=jdbc:mysql://192.168.130.177:9030 \
     --sink-conf sink.enable-2pc=false \
     --table-conf replication_num=1

--including-tables,这个部分把你要同步的表挨着摆开。

oracle-conf 是上游oracle数据库的连接信息

--sink-conf 是下游doris数据库连接信息

--sink-conf sink.enable-2pc=false 这个加了是因为你反复启动脚本,每次checkpoint 都有一个标签,你如果不false就会报错告诉你上一个同样名字的标签的错误

./lib/flink-doris-connector-1.16-1.5.0-SNAPSHOT.jar 这个就是第四部分buil的jar包的位置

-Dexecution.checkpointing.interval=1min \

-Dexecution.checkpointing.tolerable-failed-checkpoints=3 \

-Drestart-strategy=fixed-delay \

-Drestart-strategy.fixed-delay.attempts=2147483647 \

-Dexecution.checkpointing.min-pause=3000 \

这几个就是运行参数设定。

加时间戳说明

这个工具能够自动在doris一侧自动建库建表,库名和oracle数据库名一样,表名也和oracle的一样

既然自动建的,就会少一个时间戳,我是怎么加上的呢?

第一次启动,会把所有表都建好,然后你运行这个命令,挨个表都加一下:

ALTER TABLE `PAIOC` ADD COLUMN CREATEDAT DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ;

所有表都加了CREATEDAT 时间戳并且缺省值取当前时间

然后你再运行脚本时,脚本发现表已经有了就不自动再建一遍了,如此就加上了时间戳。

测试部分

启动脚本后 jdbc对业务数据库连接检查,你会发现这么多表就共享一个jdbc数据库连接抽取数据,开销低。

部署节点就一个jdbc共享连接。

 

Oracle doris 上下游每张表 每个表cont 数都一致

数据实时同步,我找了条记录 修改后 几分钟后,doris一侧的数据也跟着同步过来,你删、增记录也会同步过来,这就是实时同步呦。

多张表的压力测试

开始是一个flink job 运行所有表捆在一起报资源不足的错误,后来拆开成三个flink job 每个表 25或26张表。Flink的 内存配置修改一下,内存改大些具体如下:

Conf/ flink-conf.yaml

jobmanager.memory.process.size: 2048m

taskmanager.memory.process.size: 4096m

最后

这个工具简单高效的解决批流一体同步数据到下游apache doris数仓中。大家可以参看网页练一练,并应用到项目中创造价值。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于 Apache Doris数据仓库平台架构设计如下: 1. 架构模式: - 采用分布式架构模式,将数据仓库划分为多个节点,每个节点可以独立存储和处理数据,同时支持横向扩展,能够处理大规模的数据量和并发请求。 2. 数据存储层: - 使用分布式文件系统(如HDFS)存储数据数据按照数据表的划分进行存储,支持数据的分片和复制,提高数据的可靠性和可用性。 - 数据以列式存储的方式存储,提高查询效率。 - 支持数据的压缩和索引,降低存储空间和提高查询效率。 3. 元数据管理: - 使用元数据管理系统(如MySQL)存储数据的元信息,包括表结构、分区、数据位置等。 - 元数据管理系统支持水平扩展,保证元数据的一致性和高可用性。 4. 查询引擎: - 使用分布式查询引擎,支持SQL语法,能够高效地执行复杂的数据查询和分析操作。 - 支持预编译和查询优化技术,提高查询性能。 5. 数据加载和导出: - 支持多种方式的数据加载和导出,如批量导入、实时流入、增量导入、导出到外部系统等。 - 支持数据的转换和清洗,提高数据的质量和一致性。 6. 安全性和权限管理: - 支持访问控制,可以对用户和角色进行权限管理,确保数据的安全性和合规性。 - 支持数据加密和身份认证,保护数据的机密性和完整性。 7. 可视化和监控: - 提供用户友好的可视化界面,方便用户管理和操作数据仓库。 - 支持实时监控和告警功能,及时发现和解决系统故障和性能问题。 总之,基于 Apache Doris数据仓库平台架构设计具备高可扩展性、高性能和高可靠性的特点,可以满足大规模数据处理和查询的需求,并提供丰富的功能和工具支持,帮助用户实现高效的数据分析和决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值