2012-04-09 20 views
4

„MongoDB in Aktion“ Buch sagt:sollten mongodb-Knoten im Replicaset zeitlich synchronisiert werden?

Sie einen Schreibvorgang auf dem primären Knoten eines Replikat-Gruppe Ausgabe Stellen Sie sich vor. Was passiert als nächstes? Zuerst wird der Schreibvorgang aufgezeichnet und dann zum Oplog der Primärdatenbank hinzugefügt. In der Zwischenzeit haben alle Sekundärbenutzer ihre eigenen oplogs , die das oplog des Primärrechners replizieren. Wenn also ein bestimmter sekundärer Knoten bereit ist, sich selbst zu aktualisieren, macht er drei Dinge. Zunächst wird der Zeitstempel des letzten Eintrags in seinem eigenen oplog angezeigt. Als nächstes fragt es das Oplog der -Primärdatenbank nach allen Einträgen ab, die größer als diese Zeitmarke sind. Schließlich fügt sie jeden dieser Einträge auf seine eigene oplog und wendet die Einträge sich

Dies bedeutet also Knoten müssen Zeit synchronisiert werden? weil Zeitstempel auf allen Knoten gleich sein müssen.

Antwort

4

Im Allgemeinen, ja, es ist eine sehr gute Idee, Ihre Hosts synchronisiert zu haben (NTP ist die übliche Lösung). In der Tat habe ich viel schlimmere Probleme als ein nicht synchronisiertes Oplog gesehen - unterschiedliche Zeiten auf Datenbank-Hosts in einem Cluster sollten als ein Muss betrachtet werden.

Dies ist tatsächlich auf dem Production Notes Seite in der Dokumentation erwähnt:

http://www.mongodb.org/display/DOCS/Production+Notes#ProductionNotes-Linux

die Notiz sehen über Taktverschiebung zu minimieren.

1

Basierend auf der von Ihnen bereitgestellten Schreibweise basieren Knoten alles auf dem Zeitstempel des zuletzt empfangenen Schreibvorgangs, nicht auf ihren eigenen Takten. Das Problem tritt jedoch auf, wenn der Master heruntergefahren wird und eine sekundäre zur primären wird. Wenn die Zeit stark verzerrt ist, kann dies zu Verzögerungen bei der Replikation oder anderen Problemen führen.