核心用法
Surreal-Sync 是 SurrealDB 官方生态的数据迁移 CLI 工具,基于 Rust 实现,专用于将 MongoDB、PostgreSQL、MySQL、Neo4j、Kafka 及 JSONL 文件的数据迁移至 SurrealDB。支持两种同步模式:全量同步(Full Sync) 一次性导入历史数据;增量 CDC 同步 实时捕获变更流,适用于生产环境不停机迁移。
命令结构遵循 surreal-sync from <SOURCE> <COMMAND> 模式,需配置源库连接串与目标 SurrealDB 端点。关键特性包括:自动 schema 推断与表创建、主键到 Record ID 的映射、关系自动提取为图边、可配置批处理与并行度、断点续传的 checkpoint 机制,以及 Kafka 消费者的去重处理。
显著优点
- 多源覆盖广:单一工具覆盖文档型、关系型、图数据库及流处理系统
- CDC 机制成熟:PostgreSQL 支持 wal2json 逻辑复制与触发器双方案,MySQL 采用序列检查点,MongoDB 基于 Change Streams
- 生态原生:SurrealDB 官方维护(surreal-skills 集合),API 设计与目标数据库深度契合
- 性能优异:Rust 实现,支持并发批处理,适合大规模数据迁移
- 运维友好:断点续传、自动去重、灵活的关系抽取配置
潜在缺点与局限性
- 版本锁定:上游版本 v0.3.4,功能迭代受限于官方发布节奏
- CDC 方案异构:不同源库 CDC 实现机制差异大(wal2json/触发器/Timestamp),运维认知成本较高
- 无可视化界面:纯 CLI 工具,复杂迁移场景需配合脚本编排
- 冲突策略有限:文档提及冲突解决但未详述自动化策略,复杂业务场景需人工干预
适合人群
- 计划从 MongoDB/PostgreSQL/MySQL/Neo4j 迁移至 SurrealDB 的架构师与 DBA
- 需要构建实时数仓或统一图数据库平台的工程团队
- 熟悉 Rust 生态、能接受 CLI 工作流的后端开发者
常规风险
- 数据一致性风险:CDC 延迟或异常中断可能导致目标端数据滞后,需配合 checkpoint 监控
- schema 漂移:自动推断 schema 可能与业务预期不符,建议迁移前验证映射规则
- 权限配置复杂:wal2json 需 PostgreSQL 超级权限,生产环境需最小化权限审计
- Kafka 消费组管理:去重机制依赖消费位点,分区重分配时可能引发短暂重复写入