Dieser Artikel bietet Ihnen eine Einführung in die Prinzipien der Redis-Master-Slave-Replikation (Bilder und Text). Ich hoffe, dass er für Sie hilfreich ist.
Probleme auftreten
Maschinenausfall. Wir stellen es auf einem Redis-Server bereit. Wenn ein Maschinenausfall auftritt, müssen wir auf einen anderen Server migrieren und sicherstellen, dass die Daten synchronisiert sind. Daten sind das Wichtigste. Wenn es Ihnen egal ist, werden Sie Redis grundsätzlich nicht verwenden.
Kapazitätsengpass. Wenn wir den Redis-Speicher von 16G auf 64G erweitern müssen, wird eine einzelne Maschine dies definitiv nicht erfüllen können. Natürlich können Sie eine neue 128G-Maschine kaufen.
Um eine größere Speicherkapazität der verteilten Datenbank zu erreichen und einem hohen gleichzeitigen Zugriff standzuhalten, werden wir die Daten der ursprünglichen zentralen Datenbank separat in mehreren anderen Netzwerken speichern Knoten.
Um dieses Einzelknotenproblem zu lösen, stellt Redis auch mehrere Kopien von Daten zur Replikation auf anderen Knoten bereit, um eine hohe Verfügbarkeit von Redis und eine redundante Datensicherung zu erreichen, um eine hohe Verfügbarkeit von Daten und Diensten sicherzustellen.
Master-Slave-Replikation bezieht sich auf das Kopieren der Daten eines Redis-Servers zu anderen Redis-Servern. Ersterer wird als Master-Knoten bezeichnet, letzterer als Slave-Knoten. Die Datenreplikation erfolgt in eine Richtung und kann nur vom Master-Knoten zum Slave-Knoten erfolgen.
Standardmäßig ist jeder Redis-Server ein Master-Knoten und ein Master-Knoten kann mehrere Slave-Knoten (oder keine Slave-Knoten) haben, aber ein Slave-Knoten kann nur einen Master-Knoten haben.
Datenredundanz: Die Master-Slave-Replikation implementiert eine Hot-Sicherung von Daten, die zusätzlich zur Persistenz eine Datenredundanzmethode darstellt.
Fehlerbehebung: Wenn der Master-Knoten ein Problem hat, kann der Slave-Knoten Dienste bereitstellen, um eine schnelle Fehlerbeseitigung zu erreichen.
Lastausgleich: Auf der Grundlage der Master-Slave-Replikation in Kombination mit der Lese-Schreib-Trennung kann der Master-Knoten Schreibdienste bereitstellen und die Slave-Knoten können Lesedienste bereitstellen (d. h. Wenn Sie Redis-Daten schreiben, stellen Sie eine Verbindung zum Master-Knoten her, und stellen Sie beim Lesen von Redis-Daten eine Verbindung zum Slave-Knoten her, um die Serverlast zu teilen. Insbesondere in Szenarien, in denen weniger geschrieben und mehr gelesen wird, kann die Aufteilung der Leselast über mehrere Slave-Knoten erheblich sein Erhöhen Sie die Parallelität des Redis-Servers.
Lese- und Schreibtrennung: Es kann verwendet werden, um die Lese- und Schreibtrennung, das Schreiben der Hauptbibliothek und das Lesen der Slave-Bibliothek zu realisieren. Die Lese- und Schreibtrennung kann nicht nur die Auslastungskapazität des Servers verbessern , kann aber auch entsprechend der Nachfrage verwendet werden
Grundstein für hohe Verfügbarkeit: Zusätzlich zu den oben genannten Funktionen ist auch die Master-Slave-Replikation möglich Grundlage für die Implementierung von Sentinels und Clustern ist die Master-Slave-Replikation.
Slave-Knoten aktivieren die Master-Slave-Replikation. Es gibt drei Möglichkeiten:
Konfigurationsdatei : In der Konfigurationsdatei des Servers hinzufügen: Slaveof
Startbefehl: Hinzufügen --slaveof
Client-Befehl: Nachdem der Redis-Server gestartet wurde, führen Sie den Befehl direkt über den Client aus: Slaveof
Sie können einige Replikationsinformationen über den Info-Replikationsbefehl anzeigen
Der Master-Slave-Replikationsprozess kann grob unterteilt werden in 3 Phasen: Verbindungsaufbauphase (d. h. Vorbereitungsphase), Datensynchronisationsphase, Befehlsweitergabephase.
Nachdem der Slave-Knoten den Befehl „slaveof“ ausgeführt hat, beginnt der Replikationsprozess. Sie können ihn grob im Bild unten sehen.
Aus dem Bild ist ersichtlich, dass der Replikationsprozess grob unterteilt ist in 6 Prozesse
Die Protokolldatensätze nach der Master-Slave-Konfiguration können diesen Prozess ebenfalls sehen
1) Speichern Sie die Masterknoten-(Master-)Informationen .
Nach der Ausführung von „slaveof“ druckt Redis das folgende Protokoll:
2) Der Slave-Knoten (Slave) verwaltet die replikationsbezogene Logik durch geplante Aufgaben, die jede Sekunde ausgeführt werden. Wenn die geplante Aufgabe die Existenz eines neuen Master-Knotens erkennt, versucht sie, eine Netzwerkverbindung mit dem Knoten herzustellen
Der Slave-Knoten stellt eine Netzwerkverbindung mit dem her Master-Knoten
Der Slave-Knoten richtet einen Socket-Socket ein, der Slave-Knoten richtet einen Socket mit Port 51234 ein, der speziell zum Empfangen der vom Master-Knoten gesendeten Replikationsbefehle verwendet wird. Nachdem der Slave-Knoten erfolgreich verbunden wurde, wird das folgende Protokoll gedruckt:
Wenn der Slave-Knoten keine Verbindung herstellen kann, versucht die geplante Aufgabe auf unbestimmte Zeit, bis die Verbindung erfolgreich ist, oder führt „slaveof no one“ aus, um die Replikation abzubrechen
Bezüglich Verbindungsfehler , können Sie es auf der Informationsreplikation des Slave-Knotens ausführen. Sehen Sie sich die Metrik „master_link_down_since_seconds“ an, die die Systemzeit aufzeichnet, als die Verbindung zum Master-Knoten fehlschlug. Wenn der Slave-Knoten keine Verbindung zum Master-Knoten herstellen kann, wird jede Sekunde das folgende Protokoll gedruckt, um die Problemerkennung zu erleichtern:
# Error condition on socket for SYNC: {socket_error_reason}
3) Senden Sie den Ping-Befehl.
Nachdem die Verbindung erfolgreich hergestellt wurde, sendet der Slave-Knoten eine Ping-Anfrage für die erste Kommunikation. Der Hauptzweck der Ping-Anfrage ist wie folgt:
·Ermitteln Sie, ob der Netzwerk-Socket zwischen Master und Slave verfügbar ist.
·Erkennen Sie, ob der Masterknoten derzeit Verarbeitungsbefehle annehmen kann.
Wenn der Slave-Knoten nach dem Senden des Ping-Befehls die Pong-Antwort vom Master-Knoten nicht empfängt oder eine Zeitüberschreitung auftritt, z. B. weil das Netzwerk eine Zeitüberschreitung aufweist oder der Master-Knoten blockiert ist und nicht auf den Befehl antworten kann, wird der Slave-Knoten dies tun Trennen Sie die Replikationsverbindung und die nächste geplante Aufgabe initiiert eine erneute Verbindung.
Der vom Knoten gesendete Ping-Befehl wird erfolgreich zurückgegeben, Redis druckt das folgende Protokoll und setzt den nachfolgenden Replikationsprozess fort:
4) Berechtigungsüberprüfung. Wenn der Parameter „requirepass“ auf dem Master-Knoten festgelegt ist, ist eine Kennwortüberprüfung erforderlich. Der Slave-Knoten muss den Parameter „masterauth“ konfigurieren, um sicherzustellen, dass das Kennwort mit dem des Master-Knotens übereinstimmt, damit die Überprüfung fehlschlägt beendet und der Slave-Knoten startet den Replikationsprozess erneut.
5) Datensätze synchronisieren. Nachdem die Master-Slave-Replikationsverbindung normal kommuniziert hat, sendet der Master-Knoten beim ersten Aufbau der Replikation alle Daten, die er enthält, an den Slave-Knoten. Dieser Teil des Vorgangs ist der längste Schritt.
6) Befehl zum Weiterkopieren. Wenn der Master-Knoten die aktuellen Daten mit dem Slave-Knoten synchronisiert, ist der Replikationseinrichtungsprozess abgeschlossen. Als nächstes sendet der Master-Knoten kontinuierlich Schreibbefehle an die Slave-Knoten, um die Konsistenz der Master-Slave-Daten sicherzustellen.
Das obige ist der detaillierte Inhalt vonEinführung in das Prinzip der Redis-Master-Slave-Replikation (Bild und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!