English

December 16, 2025 · View on GitHub

Introduction

  • ape-dts is a data migration tool enabling any-to-any data transfers.
  • It also provides data subscription and data processing.
  • It is lightweight, efficient and standalone, requiring no third-party components or extra storage.
  • Designed for cloud-native stateless component scenarios.
  • In Rust.

Key features

  • Supports data migration between various databases, both homogeneous and heterogeneous.
  • Supports snapshot and cdc tasks with resume from breakpoint.
  • Supports checking and revising data.
  • Supports filtering and routing at the database, table, and column levels.
  • Implements different parallel algorithms for different sources, targets, and task types to improve performance.
  • Allows loading user-defined Lua scripts to modify the data.

Supported task types

mysql -> mysqlpg -> pgmongo -> mongoredis -> redismysql -> kafkapg -> kafkamysql -> starrocksmysql -> clickhousemysql -> tidbpg -> starrockspg -> clickhousemysql -> dorispg -> doris
Snapshot
CDC
Data check/revise/review
Structure migration

Advanced

Crate features

The dt-main crate provides several optional components which can be enabled via Cargo [features]:

  • metrics: Enable Prometheus format task metrics HTTP service interface. After enabling this feature, you can customize the metrics service with the following configuration:

    [metrics]
    # http service host
    http_host=127.0.0.1
    # http service port
    http_port=9090
    # http service worker count
    workers=2
    # prometheus metrics const labels
    labels=your_label1:your_value1,your_label2:your_value2
    
  • TBD

Quick starts

Tutorial

Run tests

Refer to test docs for details.

More docs

Benchmark

  • MySQL -> MySQL, Snapshot
MethodNode SpecsRPS(rows per second)Source MySQL Load (CPU/Memory)Target MySQL Load (CPU/Memory)
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, CDC
MethodNode SpecsRPS(rows per second)Source MySQL Load (CPU/Memory)Target MySQL Load (CPU/Memory)
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%
  • Image size
ape_dts:2.0.25-alpha.1debezium/connect:2.7
71.4 MB1.38 GB

Contributing

Structure

Structure

Modules

  • dt-main: program entry

  • dt-precheck: pre-check, to minimize interruptions during subsequent data operations by identifying issues early for fast failure

  • dt-connector: extractors + sinkers for databases

  • dt-pipeline: pipeline to connect extractors and sinkers

  • dt-parallelizer: parallel algorithms

  • dt-task: create extractors + sinkers + pipelines + parallelizers according to configurations

  • dt-common: common utils, basic data structures, metadata management

  • dt-tests: integration tests

  • related sub module: mysql binlog connector in rust

Build

  • Minimum supported Rust version (MSRV) The current minimum supported Rust version (MSRV) is 1.85.0.
  • cargo build
  • build images

Checklist

  • run cargo clippy --all-targets --all-features --workspace fix all clippy issues.

Community

If you have any questions, you can reach out to us through:

  • ApeDTS GitHub Discussions

  • ApeDTS Wechat Account with note ape-dts:

    wechat