Verwenden der Replikation zur Migration auf MongoDB

Verwenden der Replikation zur Migration auf MongoDB

Ich interessiere mich für die Verwendung der Replikationssatzfunktion von Mongo als Methode zur reibungslosen Migration zwischen Maschinen. Meine Mongo-Datenbank ist derzeit eine eigenständige Instanz. Mir ist klar, dass die empfohlene Vorgehensweise darin besteht, drei unabhängige Instanzen als Replikationssatz auszuführen. Unsere Verfügbarkeitsanforderungen sind derzeit jedoch nicht hoch genug, um die Kosten für den Betrieb von drei unabhängigen Instanzen zu rechtfertigen. Trotzdem möchte ich Ausfallzeiten so weit wie möglich vermeiden.

Wenn ich eine große Änderung an einem Server vornehme, würde ich idealerweise einen neuen Server mit den erforderlichen Änderungen starten (vielleicht geklont vom Original oder vielleicht von Grund auf neu erstellt mit den gewünschten Änderungen). Dieser Server hostet die Mongo-Datenbank.

Während ich diesen neuen Server teste, möchte ich, dass er ein versteckter Sekundärserver ist. Auf diese Weise hat er die Daten, beantwortet aber keine Client-Anfragen. Sobald ich mit dem neuen Server zufrieden bin, möchte ich die Dinge so umstellen, dass der neue Server der Primärserver und der alte Server ein versteckter Sekundärserver ist. Auf diese Weise erhält der alte Server weiterhin Daten, bearbeitet aber keine Client-Anfragen. Wenn ein Problem erkannt wird, kann ich den Primär- und Sekundärserver erneut umstellen, um die Clients an den alten Server zurückzuschicken. Vorausgesetzt, dass nach mehreren Tagen keine Probleme auftreten, kann ich den alten Server herunterfahren.

Meine Fragen sind:

  • Auf welche Probleme könnte ich bei dieser Methode stoßen?
  • Wird es mein Ziel erreichen, die Daten von einem Server auf einen anderen (und die Clients von einem Server auf einen anderen) zu verschieben, hoffentlich ohne Ausfallzeiten?
  • Da ich dies möglicherweise für zukünftige Änderungen tun möchte, würde ich den neuen Server wahrscheinlich als Replikatsatz mit 0 Mitgliedern belassen. Mir ist klar, dass dies nicht die hohe Verfügbarkeit bietet, die mindestens drei Mitglieder bieten. Aber schadet es, es so zu lassen? Oder wäre es am besten, es wieder auf eine eigenständige Instanz umzustellen?

Antwort1

Sie benötigen mindestens 3 Server in einem Replikatset, damit ein Primärserver gewählt werden kann. Sie können Ihren vorhandenen Server, den neuen Server und einen auf einem davon laufenden Arbiter als dritten Server verwenden. Sie können kein Replikatset mit einem einzelnen Server ausführen. Ohne Primärserver können Sie keine Schreibvorgänge durchführen.

Sie können nicht von Standalone zu Replicaset wechseln, ohne den Mongod-Dienst zu stoppen/starten. Sie müssen Mongo neu starten --replSet replica_set_nameoder die replSet=replica_set_nameOption zu Ihrer Mongod.conf hinzufügen.

Nach der Synchronisierung erfolgt die Konvertierung zurück in eine eigenständige Version (Mongo stoppen, ReplSet-Konfiguration entfernen, Mongo starten) in einem ähnlichen Vorgang.

Wenn für Ihren Client die Leseeinstellung „Primär“ konfiguriert ist, werden keine Ihrer Lesevorgänge an die Sekundärserver weitergeleitet (dies ist normalerweise die Standardeinstellung, da Sekundärserver hauptsächlich aus Gründen der Haltbarkeit und nicht der horizontalen Skalierung verwendet werden).

http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/

verwandte Informationen