DB Copy
Copie databases enteros o collections seleccionadas entre clusters en 4 phases: schema (ADD/DROP), índices, datos, resolución per-document. Con typed-confirmation, retry de transients, botón Retry-failed, y envelopes de audit inmutables.
Qué es
Un workspace + engine que corre una copy multi-phase de un cluster MongoDB source a un target. Phase 1 reconcilia la lista de namespaces (ADD de collections faltantes, DROP de extras con typed confirmation). Phase 2 reconcilia índices (match per-index spec). Phase 3 copia documents (batches paralelos con retry). Phase 3b reconcilia diferencias per-document vía samplePairs. Cada phase emite un envelope de audit con plan + hash de result.
Cuándo usar
Corra durante refresh de dev / staging, migración de cluster (ej.: on-prem a Atlas), migración de región, o upgrade de cluster. El typed-confirmation previene drops accidentales; el envelope de audit provee evidencia de cada cambio.
Cómo abrirlo
- En el app desktop del NoSqlStudio, abra el menú Tools → Migrate and Diff → Copy DB, o presione Ctrl+Alt+P.
- Un wizard abre con picker source / target, selección de namespace, y toggles per-phase.
- Elija las conexiones source + target, luego elija cuáles databases / collections copiar.
Las 4 phases
- Phase 1 (ADD/DROP) — reconcilia la lista de namespaces. El wizard muestra cuáles collections serán creadas y cuáles serán dropadas en el target. Drops requieren typed-confirmation (pegue el nombre de la collection para habilitar el botón).
- Phase 2 (índices) — reconcilia cada índice con match de spec completo. Índices con mismo nombre pero spec diferente son dropados y recreados.
- Phase 3 (datos) — copia documents en batches paralelos. Fallos transient (blip de red, reset de conexión) auto-retry; el engine streamea progress incluyendo rows / segundo y ETA.
- Phase 3b (resolución per-document) — para collections donde un diff per-row importa, el engine samplea N keys correspondientes y muestra diffs per-document en un viewer side-by-side. Puede aceptar, override, o skip cada.
- Retry-failed — cuando una phase termina con fallos, el engine surfa un botón Retry-failed que re-corre solo los items que fallaron. El Audit Log muestra ambas runs.
Auditoría
Cada phase emite un envelope de audit `copy.finish` / `sync.finish` / `resolve.finish` incluyendo snapshot del plan, snapshot del result, y un hash para que un auditor externo pueda probar que la run no fue silently re-played.
Sync continuo (CDC)
El sub-flow CDC del DB Copy mantiene el target en sync vía change streams. Después de la copy bulk inicial, el engine se suscribe a eventos de oplog / change stream y los aplica al target con lag limitado. El workspace Schema Diff conecta al mismo pipeline para emitir un script de migración per-collection.
Limitaciones (v1)
- Resolución sample-based de la Phase 3b es best-effort. Para consistencia per-row ironclad en collections enormes, siga con un check server-side.
- CDC requiere que ambos clusters expongan change streams — funciona en replica sets y clusters sharded; mongod standalone no es soportado.
- Drops de la Phase 1 son irreversibles. El typed-confirmation es su única red de seguridad — lea el diálogo con cuidado antes de pegar.