【大家的项目】开源一款 Rust 开发的数据 迁移,订阅,加工 工具

科技   2024-11-26 15:44   加拿大  

大家好,很高兴开源一款数据同步/校验/订阅/加工的工具: ape-dts

https://github.com/apecloud/ape-dts

欢迎大家使用并提出宝贵意见,我们会尽快响应。

极简介绍

  • ape-dts 是一款旨在实现 any-to-any 的数据迁移工具。
  • 极其简单轻量,不依赖第三方组件和额外存储。
  • 提供对多种数据库的:库表结构迁移,全量数据迁移,增量数据迁移,数据校验,数据订正,数据订阅,断点续传,etl 等能力。
  • 使用 Rust。


支持任务类型



mysql -> mysqlpg -> pgmongo -> mongoredis -> redismysql -> kafkapg -> kafkamysql -> starrocksmysql -> clickhouse
全量迁移
增量同步
数据校验/订正/复查




库表结构迁移





性能数据,和 debezium 对比

  • MySQL -> MySQL,全量
同步方式节点规格rps(rows per second)源 MySQL 负荷(cpu/内存)目标 MySQL 负荷(cpu/内存)
ape_dts1c2g714288.2% / 5.2%211% / 5.1%
ape_dts2c4g9940314.0% / 5.2%359% / 5.1%
ape_dts4c8g12658213.8% / 5.2%552% / 5.1%
debezium4c8g405121.5% / 5.2%51.2% / 5.1%
  • MySQL -> MySQL, 增量
同步方式节点规格rps(rows per second)源 MySQL 负荷(cpu/内存)目标 MySQL 负荷(cpu/内存)
ape_dts1c2g1500218.8% / 5.2%467% / 6.5%
ape_dts2c4g2469218.1% / 5.2%687% / 6.5%
ape_dts4c8g2628718.2% / 5.2%685% / 6.5%
debezium4c8g295120.4% / 5.2%98% / 6.5%


  • 镜像对比
ape_dts:2.0.3debezium/connect:2.7
86.4 MB1.38 GB


极简使用示例

  • 例子:同步 mysql 源库 test_db 的全量数据到 mysql 目标库

数据准备

  • 源库
mysql -h127.0.0.1 -uroot -p123456 -P3307

CREATE DATABASE test_db;
CREATE TABLE test_db.tb_1(id int, value int, primary key(id));
CREATE TABLE test_db.tb_2(id int, value int, primary key(id));

INSERT INTO test_db.tb_1 VALUES(1,1),(2,2);
INSERT INTO test_db.tb_2 VALUES(5,5),(6,6);
  • 目标库
mysql -h127.0.0.1 -uroot -p123456 -P3308

CREATE DATABASE test_db;
CREATE TABLE test_db.tb_1(id int, value int, primary key(id));
CREATE TABLE test_db.tb_2(id int, value int, primary key(id));

创建任务配置

rm -rf /tmp/ape_dts

mkdir -p /tmp/ape_dts

cat <<EOL > /tmp/ape_dts/task_config.ini
[extractor]
db_type=mysql
extract_type=snapshot
url=mysql://root:123456@127.0.0.1:3307?ssl-mode=disabled

[sinker]
db_type=mysql
sink_type=write
url=mysql://root:123456@127.0.0.1:3308?ssl-mode=disabled

[filter]
do_dbs=test_db
do_events=insert

[parallelizer]
parallel_type=snapshot
parallel_size=8

[pipeline]
buffer_size=16000
checkpoint_interval_secs=1
EOL

同步全量数据

export APE_DTS_IMAGE="apecloud-registry.cn-zhangjiakou.cr.aliyuncs.com/apecloud/ape-dts:2.0.8"

docker run --rm --network host \
-v "/tmp/ape_dts/task_config.ini:/task_config.ini" \
"$APE_DTS_IMAGE" /task_config.ini

检查目标库

mysql -h127.0.0.1 -uroot -p123456 -P3308

mysql> SELECT * FROM test_db.tb_1;
+----+-------+
| id | value |
+----+-------+
| 1 | 1 |
| 2 | 2 |
+----+-------+

mysql> SELECT * FROM test_db.tb_2;
+----+-------+
| id | value |
+----+-------+
| 5 | 5 |
| 6 | 6 |
+----+-------+


更多教程

  • 更多任务类型教程任务配置:请参考主页:https://github.com/apecloud/ape-dts


Rust语言中文社区
Rust官方及社区最新信息搜集、文章推送,教程学习,技巧分享,社区交流。信息来源是整个全球Rust社区。
 最新文章