Dieser Artikel wird Ihnen helfen, die Master-Slave-Replikationsarchitektur in Redis6 zu verstehen und die Eigenschaften der Redis6-Master-Slave-Replikation vorzustellen. Ich hoffe, dass er für alle hilfreich ist!
Master-Slave-Replikation bezieht sich auf das Kopieren von Daten von einem Redis-Server auf andere Redis-Server. Ersterer ist der Master-Knoten und letzterer wird zum 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 Masterknoten, und ein Masterknoten kann mehrere Slave-Knoten (oder keine Slave-Knoten) haben, ein Slave-Knoten kann jedoch nur einen Master-Knoten haben. [Verwandte Empfehlungen: Redis-Video-Tutorial]
Die Vorteile der Verwendung der Master-Slave-Replikation: Trennung von Lesen und Schreiben, wodurch die Lesekapazität des Masterknotens erweitert und der Druck auf den Masterknoten aufgeteilt werden kann. Für die Notfallwiederherstellung kann der Slave-Knoten nach dem Ausfall des Master-Knotens als Backup des Master-Knotens verwendet und jederzeit installiert werden.
Der Slave-Knoten kopiert die Daten des Master-Knotens. Nach dem Kopieren können wir eine Lese-Schreib-Trennung durchführen. Wenn es sich um einen einzelnen Knoten handelt, konzentrieren sich die Anwendungsanforderungen auf den Master-Knoten, aber beim Slave-Knoten kann dieser einen Teil des Lesedrucks tragen. Der Master-Knoten kann Lese- und Schreibvorgänge ausführen, während der Slave-Knoten nur Lesevorgänge ausführen kann. Dadurch wird der Druck auf den Masterknoten verteilt.
Redis Master-Slave-Replikation, Vorbereitung einer Master- und zwei Slave-Architekturumgebung
Nachdem wir über so viele Konzepte gesprochen haben, beginnen wir mit der Bereitstellung der Master-Slave-Replikationsarchitektur von Redis. Dieses Mal stellen wir eine Ein-Master-Architektur bereit und Zwei-Slave-Architektur.
#创建文件 mkdir -p /data/redis/master/data mkdir -p /data/redis/slave1/data mkdir -p /data/redis/slave2/data #从节点开启只读模式(默认) replica-read-only yes #从节点访问主节点的密码,和requirepass⼀样 masterauth 123456 #哪个主节点进⾏复制 replicaof 8.129.113.233 6379
Erstellen Sie zuerst einen Master-Knoten, berühren Sie eine redis.conf-Datei im Verzeichnis data/redis/master/data und bearbeiten Sie die redis.conf-Datei.
bind 0.0.0.0 port 6379 daemonize yes requirepass "123456" logfile "/usr/local/redis/log/redis1.log" dbfilename "xdclass1.rdb" dir "/usr/local/redis/data" appendonly yes appendfilename "appendonly1.aof" masterauth "123456"
Dann erstellen Sie Slave-Knoten 1 im Verzeichnis data/redis/slave1/data Verzeichnis Build redis.conf
bind 0.0.0.0 port 6380 daemonize yes requirepass "123456" logfile "/usr/local/redis/log/redis2.log" dbfilename "xdclass2.rdb" dir "/usr/local/redis/data" appendonly yes appendfilename "appendonly2.aof" replicaof 8.129.113.233 6379 masterauth "123456"
Erstellen Sie Slave-Knoten 2 und erstellen Sie redis.conf
bind 0.0.0.0 port 6381 daemonize yes requirepass "123456" logfile "/usr/local/redis/log/redis3.log" dbfilename "xdclass3.rdb" dir "/usr/local/redis/data" appendonly yes appendfilename "appendonly3.aof" replicaof 8.129.113.233 6379 masterauth "123456"
im Verzeichnis data/redis/slave2/data. Hinweis: Denken Sie daran, die Firewall auszuschalten und die Netzwerksicherheitsgruppe zu öffnen der Alibaba Cloud-Server.
Starten Sie den konfigurierten Knoten nach der Erstellung.
Startmethode:
#启动主 ./redis-server/data/redis/master/data/redis.conf #启动从1 ./redis-server/data/redis/slave1/data/redis.conf #启动从2 ./redis-server/data/redis/slave2/data/redis.conf
Verwenden Sie die Informationsreplikation, um den Status des aktuellen Knotens anzuzeigen Analyse des Prinzips der Lese-/Schreibtrennung
Die Master-Slave-Replikation ist in zwei Typen unterteilt: Der eine ist die vollständige Synchronisierung, wenn der Master-Slave zum ersten Mal eine Verbindung herstellt, der andere ist die inkrementelle Synchronisierung, nachdem die vollständige Synchronisierung abgeschlossen ist. Vollständige Kopie: Der Master-Server startet einen Hintergrundprozess, um eine RDB-Datei aus Redis-Daten zu generieren. Der Master-Server speichert alle empfangenen Schreibbefehle vom Client zwischen. Wenn der Prozess im Hintergrund gespeichert wird, wird die RDB-Datei übergeben zum Slave-Server. Zu diesem Zeitpunkt verfügt der Slave-Server über die Daten des Master-Servers. Danach sendet der Master-Server die zwischengespeicherten Befehle während dieser Zeit über das Redis-Übertragungsprotokoll an den Slave-Server, und dann verwendet der Slave-Server diese Befehle wiederum lokal, um letztendlich die Datenkonsistenz zu erreichenInkrementelle Replikation: Die Der Master-Knoten schreibt weiterhin Befehle, wenn der Slave die Initialisierung abschließt und mit der Arbeit beginnt. Der Prozess, bei dem der Master-Server Schreibvorgänge sendet, um sie an den Server zu synchronisieren, wird als inkrementelle Replikation bezeichnet. Inkrementelle Replikation bedeutet, dass der Server jedes Mal, wenn er einen Schreibbefehl ausführt, denselben Schreibbefehl an den Slave-Server sendet und der Slave-Server den empfangenen Schreibbefehl akzeptiert und ausführt.
Was sind die Merkmale der Master-Slave-Replikation:
Alle externen Anfragen können während der Datensynchronisation normal verarbeitet werden Slave-Knoten: Jeder Slave-Knoten kann Verbindungen von anderen Slave-Knoten akzeptieren. Der Slave-Knoten lässt den Schlüssel nicht ablaufen. Stattdessen sendet er nach Ablauf und Löschung des Schlüssels des Master-Knotens einen Löschbefehl an den Slave-Knoten, um ihn zu löschen. Beschleunigte Replikation: Wenn der Knoten die Neusynchronisierung abgeschlossen hat, müssen Sie eine RDB-Datei auf der Festplatte erstellen und diese Datei dann laden, um Daten an den Slave-Server zu senden. Was aber, wenn die Festplattenrate relativ niedrig ist? Dies führt zu Dateninkonsistenzen zwischen dem Master-Knoten und dem Slave-Knoten. In der neuen Version von Redis wird die plattenlose Replikation unterstützt und RBD-Dateien werden direkt über das Netzwerk an den Slave-Server gesendet, ohne dass Festplatten als Middleware verwendet werden. Wenn die Master-Slave-Verbindung getrennt wird, kann die Replikation an der Stelle fortgesetzt werden, an der sie nach der erneuten Verbindung ohne erneute Synchronisierung unterbrochen wurde. Nach Version 2.8 verwendet diese neue Funktion der Resynchronisierung den PSYNC-Befehl, während die alte den SYNC-Befehl verwendet.
Weitere Programmierkenntnisse finden Sie unter:
Programmiervideo! !
Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Master-Slave-Replikationsarchitektur in Redis6 sprechen und sehen, welche Eigenschaften sie hat!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!