surreal-sync

🔄 多源数据一键迁移至 SurrealDB

开源 CLI 工具,支持 MongoDB、PostgreSQL、MySQL、Neo4j、Kafka 等多源数据全量迁移与 CDC 增量同步至 SurrealDB,具备自动建表、关系抽取和断点续传能力。

收藏
2.9k
安装
1.1k
版本
1.0.3
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

Surreal-Sync 是一款基于 Rust 开发的命令行数据迁移工具,专用于将异构数据源同步至 SurrealDB。其 CLI 遵循统一范式:surreal-sync from <SOURCE> <COMMAND>,支持全量同步(full sync)与增量 CDC(Change Data Capture)两种模式。

主要同步源及机制:

  • MongoDB:Change Streams 实现实时 CDC
  • PostgreSQL:双方案支持——Trigger-based CDC(序列检查点)或 wal2json 逻辑复制
  • MySQL:Trigger-based CDC + 序列检查点
  • Neo4j:基于时间戳的变更追踪
  • Kafka:消费者订阅 + 去重机制
  • JSONL:批量离线导入(仅全量)

关键特性:

  • 自动 Schema 推断与 SurrealDB 表结构创建
  • 源主键到 SurrealDB Record ID 的自动映射
  • 关系抽取与图边(Graph Edge)自动构建
  • 可配置批大小与并行度
  • 断点续传(Resumable sync)与检查点追踪

显著优点

1. 多源覆盖广:单一工具覆盖文档型、关系型、图数据库及流式数据源,降低技术栈复杂度
2. CDC 机制完善:支持原生变更流(MongoDB)、逻辑复制(PostgreSQL wal2json)、触发器方案(MySQL/PostgreSQL),适配不同部署环境

3. SurrealDB 深度适配:自动处理 Record ID 映射、关系建模为图边,充分发挥 SurrealDB 多模型能力

4. 生产级特性:去重、断点续传、并行控制,满足大规模数据迁移需求

5. MIT 开源协议:可自由商用及二次开发

潜在缺点与局限性

1. CDC 方案异构:不同数据源 CDC 实现原理差异大(Change Streams vs Triggers vs WAL),运维复杂度不一
2. Trigger 方案侵入性:MySQL/PostgreSQL Trigger-based CDC 需在源库创建触发器和辅助表,对源系统有写操作侵入

3. wal2json 依赖:PostgreSQL 逻辑复制需安装 wal2json 插件,非所有托管服务支持

4. Kafka 无 Schema Registry 集成:文档未提及 Avro/Protobuf 等格式支持,复杂事件结构需额外处理

5. Neo4j CDC 精度有限:基于时间戳追踪可能存在边界条件竞态

6. 社区与生态:作为 SurrealDB 生态子项目,成熟度较 Airbyte、Debezium 等通用方案有待验证

适合人群

  • SurrealDB 早期采用者:计划从现有 MongoDB/PostgreSQL/MySQL/Neo4j 迁移至 SurrealDB 的团队
  • 多模型数据库架构师:需要利用 SurrealDB 文档+图融合特性,需自动化关系抽取的场景
  • 数据平台工程师:构建实时数仓或主数据同步管道,需要轻量级 CDC 方案替代重量级 ETL
  • Rust 生态开发者:偏好原生高性能二进制工具,避免 JVM 或 Python 运行时依赖

常规风险

| 风险类别 | 具体描述 | 缓解建议 |
|---------|---------|---------|
| **数据一致性** | Trigger-based CDC 在源库高并发下可能有延迟,极端情况导致目标滞后 | 监控延迟指标,必要时切换至 WAL 逻辑复制 |
| **Schema 漂移** | 自动 Schema 推断可能无法处理源表结构变更 | 建立 Schema 变更通知机制,测试同步中断恢复 |
| **敏感数据暴露** | 命令行明文传递 `--surreal-password` 可能在进程列表泄露 | 使用环境变量或配置文件替代命令行参数 |
| **断点续传状态** | 检查点数据若存储本地,容器化部署可能丢失进度 | 外挂持久化卷或实现分布式检查点存储 |
| **Kafka 消费组管理** | 未提及消费者组自动重平衡细节,大规模集群需验证 | 充分测试消费者扩容缩容场景 |

安全评估说明

安全认证报告显示为系统自动生成的占位符,未执行实际安全扫描。建议生产使用前进行依赖审计(cargo audit)、静态代码分析(Clippy + Semgrep)及渗透测试,特别关注数据库连接字符串和凭证的安全存储机制。

surreal-sync 内容

手动下载zip · 1.6 kB
SKILL.mdtext/markdown
请选择文件