Skip to content

Lordeath/rust_cdc_hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

150 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

如何编译

git clone https://github.com/Lordeath/rust_cdc_hub.git
cd rust_cdc_hub
cargo b -r

如何使用

源码运行

# 下载代码
git clone https://github.com/Lordeath/rust_cdc_hub.git
cd rust_cdc_hub
# 设置环境变量
export CONFIG_PATH=/mnt/d/project/meilisearch/config_example_meili.yaml
# 以release的方式运行
cargo run -r

直接运行

使用编译出来的程序运行

export CONFIG_PATH=/mnt/d/project/meilisearch/config_example_meili.yaml
chmod +x ./rust_cdc_hub
./rust_cdc_hub

docker运行

# 用rust镜像
docker run --name rust_cdc_hub --rm -it -e CONFIG_PATH=/config_example_meili.yaml -v /mnt/d/project/meilisearch/config_example_meili.yaml:/config_example_meili.yaml -v /mnt/d/project/rust_cdc_hub/target/release:/app rust:latest /app/rust_cdc_hub
# 用debian镜像(更加轻便)
docker run --name rust_cdc_hub --rm -it -e CONFIG_PATH=/config_example_meili.yaml -v /mnt/d/project/meilisearch/config_example_meili.yaml:/config_example_meili.yaml -v /mnt/d/project/rust_cdc_hub/target/release:/app debian:stable-20251117 /app/rust_cdc_hub

自己打包成docker image

# 默认使用 debian:stable-20251117
# 这里把 XXXXXXXXXXXXXX 替换成你的镜像名称
docker build --network host -t XXXXXXXXXXXXXX:0.0.1 -f "./debian.dockerfile" .

使用docker镜像运行

# 使用镜像
docker run --name rust_cdc_hub --rm -it -e CONFIG_PATH=/config_example_meili.yaml -v /mnt/d/project/meilisearch/config_example_meili.yaml:/config_example_meili.yaml fangxiangmin/rust_cdc_hub:0.0.1

配置文件示例

Mysql 到 Meilisearch

source_type: MySQL
sink_type: MeiliSearch
source_config:
  - host: 192.168.1.103
    port: 3306
    username: root
    password: XXXXXXXXXXX
    database: XXX
    table_name: table_name_XXXXXXXXXX
    server_id: 10000
    pk_column: id

sink_config:
  - meili_url: http://192.168.1.103:17700
    meili_master_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    table_name: table_name_XXXXXXXXXX
    meili_table_pk: id

Mysql 到 Mysql

source_type: MySQL
sink_type: MySQL
source_config:
  - host: 192.168.1.103
    port: 3306
    username: root
    password: XXXXXXXXXXX
    database: XXX
    table_name: table_name_XXXXXXXXXX
    server_id: 10000
    pk_column: id

sink_config:
  - host: 192.168.1.104
    port: 3306
    username: root
    password: XXXXXXXXXXX
    database: test
    table_name: table_name_XXXXXXXXXX
    pk_column: id

Mysql 到 控制台打印

想要实现的功能

  • mysql数据源
  • meilisearch 的 sink
  • mysql 的 sink
  • starrocks 的 sink
  • starrocks的sink时,自动建表,自动建库,自动加字段
  • 断点续传,挂掉之后自动重启,然后继续执行之前的作业
  • 重试的时候,不drop掉对象,防止重试的时候对象被drop。等到成功之后再drop对象
  • (mysql sink) auto create database
  • (mysql sink) auto create table
  • (mysql sink) auto add column
  • (mysql sink) all table sync
  • (mysql sink) 忽略这样的字段fullPath varchar(120) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci GENERATED ALWAYS AS (concat(path,HouseId,_utf8mb3'/')) STORED,
  • (mysql source) 获取binlog的时候,指定获取的binlog位置,防止同步时间过长导致的数据丢失
  • (mysql sink) 解决pool超时的问题,自行进行连接池的管理,防止连接池超时

后续想要做的

  • 可视化界面

About

cdc tool by rust

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published