Zunächst können Sie eine Pfeife verwenden
mongodump -h sourceHost -d yourDatabase … | mongorestore -h targetHost -d yourDatabase …
Dies verkürzt die Zeit, da jedes gelesene Dokument mehr oder weniger sofort wiederhergestellt wird targetHost
.
Dies hat jedoch den Nachteil, dass Sie möglicherweise auf Probleme stoßen, wenn der Vorgang aus irgendeinem Grund abgebrochen wird, z. B. aufgrund eines Netzwerkfehlers. In Bezug auf die Parallelisierung könnten Sie die oben genannten Schritte für jede Sammlung ausführen, aber ich bezweifle, dass Sie einen Leistungsgewinn erzielen werden, da der begrenzende Faktor höchstwahrscheinlich E / A ist, und selbst wenn nicht, wird die Parallelität höchstwahrscheinlich ein Killer sein.
Ich würde ein temporäres Replikatset erstellen , das aus dem alten Server, dem neuen Server und einem Arbiter besteht. Die anfängliche Synchronisierung ist ziemlich schnell, und selbst wenn Sie auf Netzwerkprobleme stoßen, stellt der Synchronisierungsmechanismus sicher, dass alles in Ordnung ist. Nach der ersten Synchronisierung wird der alte Server einfach als primärer Server heruntergefahren und der neue Server ohne die Option replSetName neu gestartet , sodass er wieder eigenständig wird. Jetzt können Sie eine Verbindung zum neuen Server herstellen und alle Daten werden übertragen.
Der Vorteil ist, dass dies mit minimalen Ausfallzeiten und ohne Anwesenheit funktioniert. Nachdem Sie den Replikatsatz initialisiert haben, kann Ihre Anwendung weiterhin den alten Server verwenden, und selbst neue Daten werden automatisch auf den neuen Server übertragen. Sie müssen also nicht daneben sitzen - und wir alle wissen, dass der Prozess wahrscheinlich um 3 Uhr morgens abgeschlossen sein wird, unabhängig von der Zeitzone. ;) Jedes Mal , nachdem die erste Synchronisierung abgeschlossen ist (noch Stunden oder Tage später), können Sie den neuen Server ein eigenständiges, und Ihre Anwendung Verbindungszeichenfolge ändern , um den neuen Server. Dies ist eine Frage von 2 oder 3 Minuten, wenn dies richtig geplant ist.
Bearbeiten
Diese Methode hat jedoch einen Nachteil: Sie können nur von einer Version auf eine höhere Version aktualisieren. Wenn Sie also von 2.4 (Archäologie zum Zeitpunkt dieses Schreibens) auf 3.4 (Schneide) migrieren, müssen Sie den Vorgang mehrmals wiederholen:
- Von 2,4 bis 2,6
- Von 2,6 bis 3,0
- Von 3.0 bis 3.2
- Von 3.2 bis 3.4