Die Replikationsfunktion von Redis unterstützt die Datensynchronisierung zwischen mehreren Datenbanken. Eine davon ist die Master-Datenbank (Master) und die andere ist die Slave-Datenbank (Slave). Bei einem Schreibvorgang werden die Daten im Allgemeinen automatisch mit der Slave-Datenbank synchronisiert schreibgeschützt und empfängt Daten, die von der Master-Datenbank synchronisiert werden. Eine Master-Datenbank kann mehrere Slave-Datenbanken haben, während eine Slave-Datenbank nur eine Master-Datenbank haben kann.
Empfohlen: Redis-Einführungs-Tutorial
Durch die Master-Slave-Replikationsfunktion von Redis kann die Lese-/Schreib-Trennung der Datenbank gut realisiert werden und die Ladekapazität von Der Server kann verbessert werden. Der Hauptserver ist hauptsächlich für Schreibvorgänge verantwortlich, und der Slave-Server ist hauptsächlich für Lesevorgänge verantwortlich
Master-Slave-Replikationsprozess:
1: Wenn eine Slave-Datenbank gestartet wird, wird ein Synchronisierungsbefehl an die Master-Datenbank gesendet.
2: Nach Erhalt des Synchronisierungsbefehls beginnt die Hauptdatenbank, den Snapshot im Hintergrund zu speichern (RDB-Vorgang ausführen). ) und zwischenspeichern Sie die während des Speicherzeitraums empfangenen Befehle
3: Wenn der Snapshot abgeschlossen ist, sendet Redis die Snapshot-Datei und alle zwischengespeicherten Befehle an die Slave-Datenbank.
4: Nach dem Empfang aus der Datenbank wird die Snapshot-Datei geladen und der empfangene zwischengespeicherte Befehl ausgeführt.
Hinweis: Versionen vor Redis 2.8: Wenn die Master-Slave-Datenbank synchronisiert ist, führt die Slave-Datenbank den oben genannten Vorgang erneut aus, nachdem sie aus Netzwerkgründen getrennt und wieder verbunden wurde, und eine wiederaufnehmbare Übertragung wird nicht unterstützt. Redis2.8 und höher unterstützen die Wiederaufnahme des Haltepunkts.
Hinweis: Um die Datensicherheit zu gewährleisten, können Sie ab Redis 2.8 Min-Slaves-to-Write so konfigurieren, dass ein Master-Knoten nur dann Schreibvorgänge ausführen kann, wenn er über mindestens N Slave-Knoten verfügt. Der Slave-Knoten pingt den Master-Knoten einmal pro Sekunde und der Master-Knoten zeichnet auf, wann jeder Slave-Server das letzte Mal einen Ping an ihn gesendet hat. Benutzer können die maximale Netzwerkverzögerung (min-slaves-max-lag) und die minimale Anzahl von Slave-Servern, die zum Ausführen von Schreibvorgängen erforderlich sind, über die Konfiguration festlegen
min-slaves-to-write min-slaves-to-write 3 min-slaves-max-lag 10
Wenn es mindestens min-slaves-to-write-Slave-Server gibt, Und der Verzögerungswert dieser Server beträgt weniger als min-slaves-max-lag Sekunden, dann führt der Hauptserver den vom Client angeforderten Schreibvorgang aus. Solange eine Bedingung nicht erfüllt ist, wird der Schreibvorgang nicht ausgeführt und der Master-Server gibt einen Fehler an den Client zurück, der den Schreibvorgang anfordert.
2. Bereitstellung der Master-Slave-Replikation:
Redis-Master-Slave-Struktur unterstützt einen Master und mehrere Slaves
Master-Knoten: 192.168.1.170
Slave-Knoten: 192.168.1.171
Hinweis: Die Konfiguration aller Slave-Knoten ist gleich
Methode 1: Konfigurationsdatei manuell ändern
Nur Im Slave-Knoten sind zusätzliche Änderungen erforderlich. Das Attribut „slaveof“ in der Redis-Konfigurationsdatei kann
slaveof 192.168.1.170 6379
verwendet werden, um Redis auf dem 170-Master-Knoten zu starten und die Redis-Infoinformationen anzuzeigen (führen Sie den Info-Befehl aus)
Redis auf dem 171-Slave-Knoten starten
Redis-Infoinformationen anzeigen
Methode 2: Dynamisch Einstellungen
Stellen Sie über redis-cli eine Verbindung zum Slave-Knotenserver her und führen Sie den folgenden Befehl aus.
3. Probleme, auf die bei der Master-Slave-Replikation geachtet werden muss:
① Wenn Sie die Master-Slave-Replikation verwenden, stellen Sie sicher, dass Ihr Master hat Persistenz aktiviert oder stellt sicher, dass es nach einem Absturz nicht automatisch neu startet. Der Slave ist ein vollständiges Backup des Masters. Wenn der Master also mit einem leeren Datensatz neu gestartet wird, wird auch der Slave gelöscht.
② Wenn für die Master-Datenbank beim Konfigurieren der Redis-Replikationsfunktion ein Kennwort festgelegt ist, müssen Sie das Kennwort der Master-Datenbank über den Masterauth-Parameter in der Konfigurationsdatei der Slave-Daten festlegen, damit die Slave-Datenbank wird es automatisch verwenden, wenn eine Verbindung zur Master-Datenbank hergestellt wird. Der Authentifizierungsbefehl wird authentifiziert. Es entspricht einem passwortfreien Login.
Verwandte Empfehlungen:
MySQL-Video-Tutorial: https://www.php.cn/course/list/51.html
Das obige ist der detaillierte Inhalt vonEinführung in die Redis-Master-Slave-Replikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!