DB Copy
在 4 个阶段中在 clusters 之间复制整个数据库或选定 collections:schema(ADD/DROP)、索引、数据、per-document 解决。带 typed-confirmation、瞬时错误 retry、Retry-failed 按钮和不可变审计信封。
它是什么
一个 workspace + engine,从 source MongoDB cluster 到 target 运行多阶段 copy。Phase 1 协调 namespace 列表(ADD 缺失的 collections,带 typed confirmation 的 DROP 多余项)。Phase 2 协调索引(per-index 规范匹配)。Phase 3 复制文档(带 retry 的并行批次)。Phase 3b 通过 samplePairs 协调 per-document 差异。每个阶段发出带 plan + result 哈希的审计信封。
何时使用
在 dev / staging 刷新、cluster 迁移(例如 on-prem 到 Atlas)、区域迁移或 cluster 升级期间运行。Typed-confirmation 防止意外 drops;审计信封提供每次更改的证据。
如何打开
- 在 NoSqlStudio 桌面应用中,打开 Tools 菜单 → Migrate and Diff → Copy DB,或按 Ctrl+Alt+P。
- wizard 打开,带 source / target 选择器、namespace 选择和 per-phase toggles。
- 选择 source + target 连接,然后选择要复制哪些数据库 / collections。
4 个阶段
- Phase 1(ADD/DROP)— 协调 namespace 列表。wizard 显示 target 上将创建哪些 collections 以及将删除哪些。Drops 需要 typed-confirmation(粘贴 collection 名称以启用按钮)。
- Phase 2(索引)— 协调每个索引,完整 spec 匹配。同名但 spec 不同的索引被删除并重新创建。
- Phase 3(数据)— 在并行批次中复制文档。瞬时失败(网络抖动、连接重置)自动重试;engine 流式传输进度,包括每秒行数和 ETA。
- Phase 3b(per-document 解决)— 对于 per-row diff 重要的 collections,engine 采样 N 个匹配键,并在并排查看器中显示 per-document diffs。您可以接受、覆盖或跳过每一个。
- Retry-failed — 当某个阶段以失败结束时,engine 显示一个 Retry-failed 按钮,仅重新运行失败的项。审计日志显示两次运行。
审计
每个阶段发出 `copy.finish` / `sync.finish` / `resolve.finish` 审计信封,包括 plan 快照、result 快照和哈希,以便外部审计员可以证明运行不是被无声地重放。
持续同步(CDC)
DB Copy CDC 子流程通过 change streams 保持 target 同步。初始 bulk copy 后,engine 订阅 oplog / change stream 事件并以有限延迟将它们应用到 target。Schema Diff workspace 接入相同的 pipeline 以发出 per-collection 迁移脚本。
限制(v1)
- Phase 3b 基于样本的解决是尽力而为的。对于巨大 collections 上铁定的 per-row 一致性,后续进行服务器端检查。
- CDC 需要两个 clusters 都暴露 change streams — 在 replica sets 和 sharded clusters 上工作;不支持 standalone mongod。
- Phase 1 drops 是不可逆的。Typed-confirmation 是您唯一的安全网 — 粘贴前仔细阅读对话框。