Operationen für einzelne Replikate verfolgen

Innerhalb einer Replikatfamilie werden Änderungen für alle Replikate protokolliert. Aus diesem Grund enthält ein oplog-Eintrag die Identität des Replikats, auf dem die Operation ursprünglich stattgefunden hat. Folglich lässt sich das Protokoll einer Replikatfamilie als eine Reihe von Stapeln darstellen, die aus den einzelnen oplog-Einträgen bestehen. Jeder Stapel enthält eine lineare Folge der oplog-IDs für die Operationen, die dem jeweiligen Replikat entstammen.
Das Protokoll einer nicht replizierten Datenbank ist eine lineare Operationsfolge (Abbildung 1).
Abbildung 1. Änderungsprotokoll einer Datenbank
Abbildung 2 zeigt den Status von zwei Replikaten einer Familie:

Ein Replikat enthält immer nur für seine eigenen Operationen zuverlässige Daten. Die Informationen zu anderen Replikaten sind so lange nicht auf dem neuesten Stand, bis das Replikat Aktualisierungspakete empfängt. Beispiel: Das Replikat boston_hub protokolliert 950 lokale Operationen, hat aber nur zu 504 Operationen von sanfran_hub Aktualisierungspakete empfangen. Umgekehrt hat das Replikat sanfran_hub 702 lokale Operationen aufgezeichnet, jedoch für 791 Operationen von boston_hub Aktualisierungspakete empfangen.

Dieses Szenario, in dem beide Replikate bezüglich der auf dem jeweils anderen Replikat stattgefundenen Operationen nicht auf dem neuesten Stand sind, wird in Abbildung 3 veranschaulicht.
Abbildung 3. Replikate, die nicht auf dem neuesten Stand sind
Die Darstellung einer Replikatfamilie als eine Reihe von oplog-Stapeln (siehe Abbildung 3) vereinfacht das Verständnis des Synchronisationsprozesses. Beispiel: Ein Aktualisierungspaket von Replikat boston_hub an Replikat sanfran_hub enthält Inkremente des Stapels für Replikat boston_hub (Operationen 792 bis 950). Abbildung 4 zeigt die zwei Inkremente. Da sanfran_hub seinen eigenen Status kennt, benötigt es nur die Aktualisierungen, die anderen Replikaten entstammen. In einigen Situationen ist es zur Fehlerbehebung erforderlich, die Daten eines Replikats zu seinen eigenen Operationen zurückzusetzen.
Abbildung 4. Aktualisierungen zwischen zwei Replikaten
Anmerkung: Bis das Paket auf sanfran_hub importiert wird, haben auf boston_hub weitere Änderungen stattgefunden. Diese Änderungen sind nicht im Aktualisierungspaket enthalten.

Feedback