Heim  >  Artikel  >  Datenbank  >  Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen

Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen

青灯夜游
青灯夜游nach vorne
2021-10-08 10:56:361633Durchsuche

Dieser Artikel befasst sich mit der Master-Slave-Replikation in redis und stellt die spezifische Verwendung, Vorsichtsmaßnahmen und den Sentinel-Modus vor. Ich hoffe, dass er für alle hilfreich ist!

Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen

1: Übersicht

Die Redis-Master-Slave-Replikation ist derzeit die am häufigsten verwendete Lese-/Schreib-Trennmethode. Ein Master ist für Schreibvorgänge verantwortlich und löst hauptsächlich die Probleme. Ziel ist es, den Druck des Redis-Lesens zu teilen und die Effizienz des Lesens und Schreibens von Daten zu verbessern. [Verwandte Empfehlungen:

Redis-Video-Tutorial

]

Lassen Sie uns über die Master-Slave-Replikation in Redis sprechenZwei: Spezifische Verwendung

1. Geben Sie die Slave-Bibliothek an, die mit der Hauptbibliothek verbunden werden soll:

Host ist die Verbindungsadresse, Port ist die Portnummer der Verbindung Adresse, natürlich können Sie sie auch selbst kopieren. Mehrere redis.conf-Dateien können mehrere Redis-Dienste verschiedener Ports starten, indem sie ihre Portnummer, Thread-Nummer und andere Informationen ändern

SLAVEOF [host] [port]

2. Die Hauptbibliothek ist für das Schreiben zuständig (Lesen ist ebenfalls möglich), die Slave-Bibliothek kann nur lesen: SLAVEOF [host] [port]

2.主库负责写(读也可以),从库只能读:

主库中写的数据能在从库中获取:6381为主库,6380为从库

Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen

3.使从库重新成为主库:

SLAVEOF no one

三:注意事项:

(1)一般情况下,主库掉线后,从库会等待主库重新连线,依旧保持从库状态

(2)从库掉线后,需重新连上主库,才能作为从库,否则则为主库

四:哨兵模式

概述:为了当主库服务掉线后,使其他从库能重新选取一个主库继续服务运转

作用:当主库服务掉线之后,哨兵会监听到主库掉线,并进行投票操作使其中一个从库成为主库替代原主库运行。

1、在redis服务启动的目录下创建一个 sentinel.conf文件,vim编辑此配置文件

` sentinel monitor host6379 127.0.0.1 6381 1  `

2、通过 redis-sentinel 【文件目录】/sentinel.conf

 连接建立-->数据同步-->命令持续传播
 
 在从节点执行 slaveof 命令后,复制过程便开始运作,下面图示大概可以看到,\

Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen

3. Machen Sie die Slave-Bibliothek wieder zur Master-Bibliothek:

SLAVEOF no one

Drei: Vorsichtsmaßnahmen:

(1) Unter normalen Umständen wartet die Slave-Datenbank, nachdem die Master-Datenbank offline geschaltet wurde, auf die erneute Verbindung der Master-Datenbank und behält weiterhin den Status der Slave-Datenbank bei Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen

(2) Nachdem die Slave-Datenbank offline gegangen ist, muss sie erneut eine Verbindung zur Master-Datenbank herstellen, um als Slave-Bibliothek zu funktionieren, andernfalls ist sie die Master-Bibliothek

Viertens: Sentinel Modus

Übersicht: Damit andere Slave-Bibliotheken erneut eine Master-Bibliothek auswählen können, um fortzufahren, wenn der Hauptbibliotheksdienst offline ist. Dienstbetrieb


Funktion: Wenn der Hauptdatenbankdienst offline geht, überwacht der Wachposten, dass der Hauptbibliotheksdienst offline ist Die Datenbank ist offline und führt einen Abstimmungsvorgang durch, um eine der Slave-Datenbanken zur Hauptdatenbank zu machen und die ursprüngliche Hauptdatenbank zu ersetzen.

Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen1. Erstellen Sie eine sentinel.conf-Datei in dem Verzeichnis, in dem der Redis-Dienst gestartet wird, und bearbeiten Sie diese Konfigurationsdatei mit vim

# Error condition on socket for SYNC: {socket_error_reason}

2 über redis-sentinel [Dateiverzeichnis ]/sentinel.confSentinel starten

Hinweis: Wenn die ursprüngliche Hauptbibliothek im Sentinel-Modus erneut verbunden wird, fügt Sentinel seine Operationen der neuen Hauptbibliothek hinzu, d. h., es existiert als Slave-Bibliothek neue Hauptbibliothek. Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen

Fünf: Prinzip:

rrreee

Aus dem Bild ist ersichtlich, dass der Replikationsprozess grob in 6 Prozesse unterteilt ist

Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen

Die Protokollaufzeichnungen nach der Master-Slave-Konfiguration können diesen Prozess ebenfalls sehen


1 ) Speichern Sie die Informationen zum Masterknoten (Master).
Nach der Ausführung von Slaveof druckt Redis das folgende Protokoll:

Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen2) Der Slave-Knoten (Slave) verwaltet die replikationsbezogene Logik durch geplante Aufgaben, die jede Sekunde ausgeführt werden, wenn die geplante Aufgabe erkennt, dass es einen neuen Master-Knoten gibt , wird versucht, mit dem neuen Master-Knoten zu kommunizieren. Der Slave-Knoten stellt eine Netzwerkverbindung mit dem Master-Knoten her. Der Slave-Knoten stellt einen Socket her mit Port 51234, der speziell zum Empfangen von Nachrichten verwendet wird, die vom Masterknoten gesendet werden. Kopieren Sie den Befehl. Nachdem der Slave-Knoten erfolgreich verbunden wurde, wird das folgende Protokoll gedruckt:

Lassen Sie uns über die Master-Slave-Replikation in Redis sprechen

Wenn der Slave-Knoten keine Verbindung herstellen kann, wird die geplante Aufgabe auf unbestimmte Zeit wiederholt, bis die Verbindung erfolgreich ist oder „slaveof noone“ ausgeführt wird, um die Replikation abzubrechen. Bei Verbindungsfehlern können Sie eine Informationsreplikation auf dem Slave-Knoten ausführen, um den Indikator „master_link_down_since_seconds“ anzuzeigen, der 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:

rrreee

3) Senden Sie den Ping-Befehl. Lassen Sie uns über die Master-Slave-Replikation in Redis sprechenNachdem 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. wenn das Netzwerk eine Zeitüberschreitung erfährt oder der Master-Knoten blockiert ist und nicht auf den Befehl antworten kann, trennt der Slave-Knoten die Verbindung Replikationsverbindung hergestellt 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 kontinuierlichen Kopieren. 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.

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmiervideos! !

Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Master-Slave-Replikation in Redis sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen