Heim >Datenbank >Redis >Lassen Sie uns über die Master-Slave-Replikationsarchitektur in Redis6 sprechen und sehen, welche Eigenschaften sie hat!

Lassen Sie uns über die Master-Slave-Replikationsarchitektur in Redis6 sprechen und sehen, welche Eigenschaften sie hat!

青灯夜游
青灯夜游nach vorne
2021-12-14 10:03:201854Durchsuche

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!

Lassen Sie uns über die Master-Slave-Replikationsarchitektur in Redis6 sprechen und sehen, welche Eigenschaften sie hat!

Einführung in die Master-Slave-Replikation

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.

Einführung in die Architektur

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!

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