1 个不稳定发布
0.1.9 | 2024 年 4 月 26 日 |
---|---|
0.1.8 |
|
#29 in #cdc
105KB
2K SLoC
Rust-CDC-Validator
概述
rust-cdc-validator
是一个基于 Rust 的工具,它将 Amazon RDS(PostgreSQL)数据库中的表与使用 AWS Database Migration Service(DMS)迁移到 Amazon S3 的数据进行比较。它特别适用于确保 RDS 数据库与 S3 中的 Parquet 文件之间的数据一致性,尤其是在变更数据捕获 (CDC) 更新方面,因为尚不支持以 S3 为目标的 DMS 验证。
功能
- 导入存储在 AWS S3 中的基于日期文件夹分区 CDC Parquet 数据的快照,在本地部署的 Postgres 中
- 指定特定时间范围以在 Postgres 数据库上复制 S3 状态
- 在数据丢失的情况下从 S3 恢复 RDS 状态
- 比较 Amazon RDS 数据库中特定表的状态与存储在 S3 存储桶中 Parquet 文件中的数据
- 通过修改已验证块的大小来识别行级别的差异
- 将其用作库以将其集成到项目中,或作为客户端以将其用作独立工具
先决条件
- 您的源数据库是 PostgreSQL
- 您有一个运行在 FULL LOAD + CDC 模式下的 AWS DMS 任务
- 该任务的目的是 AWS S3
- 具有 Parquet 格式的文件
- 基于日期的文件夹分区
- DMS 注入的
Op
额外列
安装(客户端)
为了将工具作为客户端使用,您可以使用 cargo
。
该工具提供两个功能来运行它,分别是 Inquire
和 Clap
。
使用 Clap
Usage: rust-cdc-validator-client validate [OPTIONS] --bucket-name <BUCKET_NAME> --s3-prefix <S3_PREFIX> --source-postgres-url <SOURCE_POSTGRES_URL> --target-postgres-url <TARGET_POSTGRES_URL> --start-date <START_DATE>
Options:
--bucket-name <BUCKET_NAME>
S3 Bucket name where the CDC files are stored
--s3-prefix <S3_PREFIX>
S3 Prefix where the files are stored Example: data/landing/rds/mydb
--source-postgres-url <SOURCE_POSTGRES_URL>
Url of the database to validate the CDC files Example: postgres://postgres:postgres@localhost:5432/mydb
--target-postgres-url <TARGET_POSTGRES_URL>
Url of the target database to import the parquet files Example: postgres://postgres:postgres@localhost:5432/mydb
--database-schema <DATABASE_SCHEMA>
Schema of database to validate against S3 files [default: public]
--included-tables [<INCLUDED_TABLES>...]
List of tables to include for validatation against S3 files
--excluded-tables [<EXCLUDED_TABLES>...]
List of tables to exclude for validatation against S3 files
--start-date <START_DATE>
Start date to filter the Parquet files Example: 2024-02-14T10:00:00Z [default: 2024-02-14T10:00:00Z]
--stop-date <STOP_DATE>
Stop date to filter the Parquet files Example: 2024-02-14T10:00:00Z
--chunk-size <CHUNK_SIZE>
Datadiff chunk size [default: 1000]
--max-connections <MAX_CONNECTIONS>
Maximum connection pool size [default: 100]
--start-position <START_POSITION>
Datadiff start position [default: 0]
--only-datadiff
Run only the datadiff
--only-snapshot
Take only a snapshot from S3 to target DB
-h, --help
Print help
-V, --version
Print version
使用 Inquire
rust-cdc-validator --features="with-inquire"
安装(库)
为了将工具作为库使用,您可以运行
cargo add rust-cdc-validator
示例
- 通过 Docker Compose 启动本地 Postgres 数据库
docker-compose up
psql -h localhost -p 5438 -U postgres -d mydb
- 构建并运行 Rust 工具
cargo fmt --all
cargo clippy --all
cargo build
RUST_LOG=rust_cdc_validator=info,rust_pgdatadiff=info cargo run --features="with-clap" validate --bucket-name my-bucket --s3-prefix prefix/path --source-postgres-url postgres://postgres:postgres@localhost:5432/mydb1 --target-postgres-url postgres://postgres:postgres@localhost:5438/mydb --database-schema public --included-tables mytable --start-date 2024-02-14T10:00:00Z --chunk-size 100
为了进行更多调试,您可以通过导出以下内容启用与 Rust 相关的日志
export RUST_LOG=rust_cdc_validator=debug,rust_pgdatadiff=debug
许可证
本项目采用 MIT 许可证
依赖项
~89–130MB
~2.5M SLoC