Sie müssen eine Möglichkeit finden, Daten von der Client-Datenbank in die zentrale Datenbank zu übertragen.Basisch, es gibt mehrere Instanzen von MongoDB, die auf Remote-Rechnern [Clients] laufen und eine Methode benötigen, um die zentrale Mongo-Datenbank periodisch mit neu hinzugekommenen und modifizierten Dokumenten in Clients zu aktualisieren .it muss seine Datensätze auf den einzelnen zentralen Server replizieren
ZB:
Wenn ich 3 Mongo-Instanzen auf 3 Rechnern mit Daten von je 10 GB laufen lasse, muss die mongoDB der 4. Maschine nach der Datenmigration 30 GB Daten haben. Und central mongoDB Maschine muss regelmäßig mit Daten von all diesen 3 Maschinen aktualisiert werden. Aber diese 3 Maschinen erhalten nicht nur neue Dokumente, sondern auch vorhandene Dokumente können aktualisiert werden. Ich möchte, dass der zentrale mongoDB-Rechner auch diese Aktualisierungen erhält.
Ihre gewünschte Replikationsstrategie wird von MongoDB nicht offiziell unterstützt.
Ein MongoDB-Replikatsatz besteht aus einer einzelnen Primärdatenbank mit asynchroner Replikation auf einen oder mehrere sekundäre Server in derselben Replik einstellen. Sie können einen Replikatsatz mit mehreren Primärknoten oder Replikation nicht auf einen anderen Replikatsatz konfigurieren.
Es gibt jedoch einige mögliche Ansätze für Ihren Anwendungsfall, je nachdem, wie aktiv Sie Ihren zentralen Server auf dem neuesten Stand halten möchten und wie viele Daten / Updates Sie verwalten müssen.
Das Zusammenführen von Daten von mehreren eigenständigen Servern kann zu unerwarteten Konflikten führen. Zum Beispiel würden eindeutige Indizes nichts über Dokumente wissen, die auf anderen Servern erstellt wurden.
Idealerweise werden die Daten, die Sie konsolidieren, immer noch durch einen eindeutigen Datenbanknamen pro Ursprungsserver getrennt, so dass Sie kein merkwürdiges Nebeneinander zwischen verschiedenen Dokumenten haben, die denselben Namespace und _id
für unterschiedliche Herkunft haben Server.
mongodump
und mongorestore
Wenn Sie Inhalte nur periodisch mit Ihrem zentralen Server synchronisieren müssen, verwenden Sie mongodump
und mongorestore
. Sie können periodische mongodump
von jeder Ihrer Standalone-Instanzen einplanen und mongorestore
verwenden, um sie in den zentralen Server zu importieren.
Es gibt einen Parameter --db
für mongorestore
, mit der Sie bei Bedarf eine andere Datenbank als den ursprünglichen Namen wiederherstellen können
mongorestore
führt nur Einfügungen in die vorhandene Datenbank durch (d. h. nicht führt Aktualisierungen oder Upserts durch). Wenn vorhandene Daten mit demselben _id
bereits in der Zieldatenbank vorhanden sind, ersetzt mongorestore sie nicht.
Sie können mongodump
Optionen wie --query
Selektive Auswahl der zu exportierenden Daten (z. B. nur aktuelle Daten statt aller auswählen)
Wenn Sie die Datenmenge auf dump & amp; Bei jedem Lauf wiederherstellen (z. B. nur "geänderte" Daten exportieren), müssen Sie herausfinden, wie mit Aktualisierungen und Löschungen auf dem zentralen Server umgegangen wird.
mongorestore --drop
), um sicherzustellen, dass alle Änderungen kopiert werden.
oplog
. Wenn Sie mehr Echtzeit- oder inkrementelle Replikation benötigen, können Sie tailable cursors erstellen auf der MongoDB-Replikation oplog
.
Dieser Ansatz ist im Grunde "rollen Sie Ihre eigene Replikation". Sie müssten eine Anwendung schreiben, die das oplog auf jeder Ihrer MongoDB-Instanzen zurückschaltet und nach interessanten Änderungen sucht, die auf Ihrem zentralen Server gespeichert werden sollen. Beispielsweise möchten Sie möglicherweise nur Änderungen für ausgewählte Namespaces (Datenbanken oder Sammlungen) replizieren.
Ein verwandtes Tool, das von Interesse sein könnte, ist der experimentelle Mongo Connector aus 10gen Labors. Dies ist ein Python-Modul, das eine Schnittstelle für die Weitergabe der Replikation oplog
bereitstellt.
Sie müssen dazu Ihren eigenen Code implementieren und erfahren, wie Sie mit oplog
documents
Möglicherweise gibt es ein alternatives Produkt, das Ihr gewünschtes Replikationsmodell "out of the box" besser unterstützt.
Sie sollten beachten, dass nur Replikate für die Replikation festgelegt sind. Ein Replikatsatz bedeutet immer: eine primäre, mehrere sekundäre. Schreiben Sie immer auf den primären Server. Anscheinend möchten Sie Multi-Master-Replikation, die nicht von MongoDB unterstützt wird. Sie möchten also in eine andere Technologie wie CouchDB oder CouchBase schauen. MongoDB ist hier burst.
Tags und Links mongodb