ITPub博客

首页 > 数据库 > 数据库开发技术 > 【大家的项目】开源一款 Rust 开发的数据 迁移,订阅,加工 工具

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

原创 数据库开发技术 作者:Rust语言中文社区 时间:2024-11-26 15:43:54 0 删除 编辑

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

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

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

极简介绍

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


支持任务类型



mysql -> mysql pg -> pg mongo -> mongo redis -> redis mysql -> kafka pg -> kafka mysql -> starrocks mysql -> clickhouse
全量迁移 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔
增量同步 ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔
数据校验/订正/复查 ✔ ✔ ✔




库表结构迁移 ✔ ✔



✔ ✔


性能数据,和 debezium 对比

  • MySQL -> MySQL,全量
同步方式 节点规格 rps(rows per second) 源 MySQL 负荷(cpu/内存) 目标 MySQL 负荷(cpu/内存)
ape_dts 1c2g 71428 8.2% / 5.2% 211% / 5.1%
ape_dts 2c4g 99403 14.0% / 5.2% 359% / 5.1%
ape_dts 4c8g 126582 13.8% / 5.2% 552% / 5.1%
debezium 4c8g 4051 21.5% / 5.2% 51.2% / 5.1%
  • MySQL -> MySQL, 增量
同步方式 节点规格 rps(rows per second) 源 MySQL 负荷(cpu/内存) 目标 MySQL 负荷(cpu/内存)
ape_dts 1c2g 15002 18.8% / 5.2% 467% / 6.5%
ape_dts 2c4g 24692 18.1% / 5.2% 687% / 6.5%
ape_dts 4c8g 26287 18.2% / 5.2% 685% / 6.5%
debezium 4c8g 2951 20.4% / 5.2% 98% / 6.5%


  • 镜像对比
ape_dts:2.0.3 debezium/connect:2.7
86.4 MB 1.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语言中文社区;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2020-06-11

  • 博文量
    1769
  • 访问量
    718381