Surreal-Sync —— 数据迁移与同步
Surreal-Sync 是一个 CLI 工具,用于将数据从各种数据库源迁移到 SurrealDB,并通过变更数据捕获(CDC)实现全量同步和增量同步。
支持的源
| 源 | 全量同步 | 增量 CDC | 方法 |
|---|---|---|---|
| MongoDB | 是 | 是 | 更改流 |
| MySQL | 是 | 是 | 基于触发器的 CDC + 序列检查点 |
| PostgreSQL(触发器) | 是 | 是 | 基于触发器的 CDC + 序列检查点 |
| PostgreSQL(wal2json) | 是 | 是 | 使用 wal2json 插件的逻辑复制 |
| Neo4j | 是 | 是 | 基于时间戳的跟踪 |
| JSONL 文件 | 是 | 不适用 | 从 JSON Lines 批量导入 |
| Apache Kafka | 是 | 是 | 带去重的消费者订阅 |
快速开始
# 安装 surreal-sync(Rust 二进制文件)
cargo install surreal-sync
# 从 PostgreSQL(基于触发器)进行全量同步
surreal-sync from postgres trigger-full \
--connection-string "postgresql://user:pass@localhost/mydb" \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# 从 PostgreSQL(wal2json)进行增量 CDC
surreal-sync from postgres wal2json \
--connection-string "postgresql://user:pass@localhost/mydb" \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# 从 MongoDB 进行全量同步
surreal-sync from mongo full \
--connection-string "mongodb://localhost:27017/mydb" \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# 从 JSONL 批量导入
surreal-sync from jsonl import \
--file data.jsonl \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
# 从 Kafka 消费
surreal-sync from kafka consume \
--bootstrap-servers "localhost:9092" \
--topic my-events \
--surreal-endpoint "http://localhost:8000" \
--surreal-username root \
--surreal-password root \
--to-namespace prod \
--to-database main
CLI 模式
surreal-sync from <SOURCE> <COMMAND> \
--connection-string [CONNECTION STRING] \
--surreal-endpoint [SURREAL ENDPOINT] \
--surreal-username [SURREAL USERNAME] \
--surreal-password [SURREAL PASSWORD] \
--to-namespace <NS> \
--to-database <DB>
关键特性
- 自动模式推断和 SurrealDB 表创建
- 从源主键映射记录 ID
- 关系提取和图边创建
- 可配置的批处理大小和并行度
- 带检查点跟踪的可恢复同步
- Kafka 消费者的去重
完整文档
请参阅主技能的规则文件以获取完整指导:
- rules/surreal-sync.md —— 源配置、模式映射、CDC 设置、冲突解决和生产部署
- surrealdb/surreal-sync —— 上游仓库