Wie Kopien von Daten entstehen
Replikation heißt, dieselben Daten auf mehreren Rechnern zu halten. Fällt ein Rechner aus, hat ein anderer die Daten noch, und viele Lesende verteilen sich auf mehrere Kopien.
Eine Bank hält das Konto von Mia auf drei Rechnern. Wird eine Kopie nicht rechtzeitig nachgeführt, sieht Mia einen alten Kontostand. Darum ist die Frage, wie Kopien aktuell bleiben.
Am Ende dieser Lektion
Notiz
Ich kann erklären, wie Kopien von Daten aktuell gehalten werden und was ein Ausfall bewirkt.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Replikation | dieselben Daten auf mehreren Rechnern halten |
| Primärknoten | der Knoten, der alle Schreibvorgänge annimmt (Primary) |
| Replikat | ein Knoten, der die Änderungen des Primärknotens nachspielt |
| Replikationsverzug | der Abstand, um den ein Replikat zurückliegt |
| Failover | ein Replikat wird neuer Primärknoten, wenn der alte ausfällt |
| Schreiblog | die geordnete Liste aller Änderungen |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Primärknoten nimmt alle Schreibvorgänge an
Bei der gebräuchlichsten Art der Replikation gibt es einen Primärknoten. Nur er nimmt Schreibvorgänge an und trägt sie in sein Schreiblog ein.
Die Replikate lesen dieses Log und spielen jede Änderung in derselben Reihenfolge nach. Weil alle dieselbe Reihenfolge nutzen, kommen sie zum selben Stand.
Beispiel: Log und Stand der Replikate
| Nr. | Änderung im Log | Replikat A hat sie | Replikat B hat sie |
|---|---|---|---|
| 1 | konto:mia = 100 | ja | ja |
| 2 | konto:mia = 80 | ja | ja |
| 3 | konto:mia = 95 | ja | nein |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Einen kleinen Client namens v bauen
v() ( printf '%s\r\n' "$*" | nc -w 1 valkey 6379 )Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Rolle des Servers im Lab erfragen
v INFO replication | grep -E "^(role|connected_slaves):"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein Replikat liegt meist etwas zurück
Das Nachspielen braucht Zeit, denn die Änderungen reisen über das Netz. Der Abstand heißt Replikationsverzug.
Der Verzug zählt Einträge: Das Log hat drei Einträge, das Replikat kennt zwei, der Verzug ist 1. Wer ein Replikat liest, sieht manchmal einen Stand, der schon überholt ist.
Den Verzug eines Replikats zählen
# Der Primärknoten schreibt jede Änderung in sein Log. Das Replikat spielt das Log nach.
log = ["konto:mia=100", "konto:mia=80", "konto:mia=95"]
uebernommen = 2
print("Das Replikat kennt", uebernommen, "von", len(log), "Einträgen")
print("Es fehlen:", len(log) - uebernommen)
print("Letzter Stand im Replikat:", log[uebernommen - 1])
# Setzen Sie uebernommen auf 3 und starten Sie erneut.
Fällt der Primärknoten aus, übernimmt ein Replikat
Fällt der Primärknoten aus, wird ein Replikat neuer Primärknoten. Das heißt Failover. Meist wählt man das Replikat mit dem längsten Log.
Hatte der alte Primärknoten Einträge noch nicht weitergegeben, gehen diese Schreibvorgänge verloren. Der Verzug von eben ist also die Menge, die ein Ausfall kosten kann.
Was ein Failover kosten kann
# Der Primärknoten fällt aus. Das Replikat mit dem längsten Log wird neuer Primärknoten.
log_primaer = ["a", "b", "c", "d"]
log_replikat = ["a", "b", "c"]
verloren = len(log_primaer) - len(log_replikat)
print("Das Replikat übernimmt mit", len(log_replikat), "Einträgen")
print("Verlorene Schreibvorgänge:", verloren)
# Machen Sie log_replikat zu einer Kopie aller vier Einträge und starten Sie erneut.
Ein häufiger Fehler
Warnung
Viele denken, ein Replikat sei eine Sicherung. Ein Replikat spielt aber jede Änderung nach, auch ein versehentliches Löschen. Eine Sicherung ist ein Stand von gestern. Brauchen Sie beides, halten Sie Replikate und Sicherungen.