Heim >Backend-Entwicklung >PHP-Tutorial >Verwandte Vorgänge der Redis-Master-Slave-Synchronisierung und der Lese-/Schreib-Trennungseinstellungen
In diesem Artikel wird die Verwendung der Master-Slave-Synchronisationsfunktion (Master, Slave) von Redis vorgestellt, um dem Programm die Trennung von Lesen und Schreiben zu ermöglichen, IO-Engpässe zu vermeiden und die Effizienz beim Lesen und Schreiben von Daten zu verbessern.
Redis unterstützt einen Master-Server zur Synchronisierung mehrerer Slave-Server und die Synchronisierung verwendet den Publish/Subscribe-Mechanismus.
Ein Master kann auch für mehrere Slaves geschichtet werden. Die Slaves können unter jedem Slave synchronisiert und zu einer Baumstruktur erweitert werden.
Der Standardport von Redis ist 6379 Um den ursprünglichen Redis nicht zu beeinträchtigen, verwenden wir den neuen Port
master redis_master.conf
port 6300requirepass 123456masterauth 123456daemonize yes
slave1 konfigurieren redis_slave1.conf als Slave des Masters festlegen
port 6301slaveof 127.0.0.1 6300requirepass 123456masterauth 123456daemonize yes
slave2 Konfiguration redis_slave2.conf Slave
port 6302slaveof 127.0.0.1 6300requirepass 123456masterauth 123456daemonize yes
daemonize als Master festlegen, um den Hintergrundstart anzuzeigen .
requirepass ist das Host-Authentifizierungskennwort.
masterauth Überprüfen Sie das Passwort für den Slave, um auf den Host zuzugreifen. Es muss mit dem Requirepass des Hosts übereinstimmen.
Da die Master-Slave-Umschaltung später demonstriert werden muss, sind die Verifizierungskennwörter der drei Conf-Sätze konsistent.
Master, Slave1, Slave2 nacheinander starten
redis-server redis_master.conf redis-server redis_slave1.conf redis-server redis_slave2.conf
Nach der Ausführung prüfen, ob der Start erfolgreich ist
ps aux|grep redis root 1858 Ss 3:55 0:00.01 redis-server *:6302 root 1849 Ss 3:54 0:00.01 redis-server *:6301 root 1842 Ss 3:54 0:00.02 redis-server *:6300
Enter Master, setzen Sie den Wert des Schlüssels abc auf 123
redis-cli -p 6300127.0.0.1:6300> auth 123456OK127.0.0.1:6300> set abc 123OK127.0.0.1:6300> get abc"123"
Geben Sie Slave1 bzw. Slave2 ein, um zu überprüfen, ob die Daten synchronisiert sind
Slave1:
redis-cli -p 6301 127.0.0.1:6301> auth 123456OK127.0.0.1:6301> get abc"123" 127.0.0.1:6301>
Slave2:
redis-cli -p 6302 127.0.0.1:6302> auth 123456OK127.0.0.1:6302> get abc"123" 127.0.0.1:6302>
Geben Sie master einÄndern Sie den Wert des Schlüssels abc auf 456
127.0.0.1:6300> set abc 456OK127.0.0.1:6300> get abc"456"
Überprüfen Sie, ob Slave1 und Slave2 synchronisiert sind
Slave1:
127.0.0.1:6301> get abc"456"
Slave2:
127.0.0.1:6302> get abc"456"
Während des Vorgangs, wenn ein Problem mit dem Master, wir können einen anderen Slave einrichten. Die Maschine wird automatisch auf Master gesetzt. Die Sentinel-Funktion von Redis wird hier hauptsächlich zur Implementierung der Master-Slave-Umschaltung verwendet.
sentinel1.conf
port 26301sentinel monitor master 127.0.0.1 6300 2sentinel auth-pass master 123456logfile "/tmp/sentinel.log"daemonize yes
sentinel2.conf
port 26302sentinel monitor master 127.0.0.1 6300 2sentinel auth-pass master 123456logfile "/tmp/sentinel.log"daemonize yes
sentinel Monitor Master 127.0.0.1 6300 22 in 🎜> bedeutet, dass die Master-Slave-Umschaltung nur durchgeführt wird, wenn mehr als 2 Sentinel-Dienste einen Master-Ausfall erkennen.
Starten Sie zwei Sentinel-Prozesse redis-server sentinel1.conf --sentinel
redis-server sentinel2.conf --sentinel
ps aux|grep redis
root 2643 Ss 4:28 0:00.02 redis-server *:26302 [sentinel]
root 2636 Ss 4:28 0:00.02 redis-server *:26301 [sentinel]
Running mode=sentinel, port=26301. Sentinel ID is 3a23343948cd7f26662ccba1d01b92955311ef52 +monitor master master 127.0.0.1 6300 quorum 2+slave slave 127.0.0.1:6301 127.0.0.1 6301 @ master 127.0.0.1 6300+slave slave 127.0.0.1:6302 127.0.0.1 6302 @ master 127.0.0.1 6300Running mode=sentinel, port=26302. Sentinel ID is ce0ee2af6b454205a3e475763945f505a10a7d6a +monitor master master 127.0.0.1 6300 quorum 2+slave slave 127.0.0.1:6301 127.0.0.1 6301 @ master 127.0.0.1 6300+slave slave 127.0.0.1:6302 127.0.0.1 6302 @ master 127.0.0.1 6300+sentinel sentinel 3a23343948cd7f26662ccba1d01b92955311ef52 127.0.0.1 26301 @ master 127.0.0.1 6300+sentinel sentinel ce0ee2af6b454205a3e475763945f505a10a7d6a 127.0.0.1 26302 @ master 127.0.0.1 6300
Beenden Sie den Master und Testen Sie den Master und den Slave. Nach dem Umschalten des
Kill Master-Prozesses stellt Sentinel fest, dass der Master ungültig ist, und führt einen Master-Slave-Umschaltvorgang durch.
Das Protokoll lautet wie folgt:+failover-state-reconf-slaves master master 127.0.0.1 6300+slave-reconf-sent slave 127.0.0.1:6301 127.0.0.1 6301 @ master 127.0.0.1 6300+config-update-from sentinel 3a23343948cd7f26662ccba1d01b92955311ef52 127.0.0.1 26301 +switch-master master 127.0.0.1 6300 127.0.0.1 6302+slave slave 127.0.0.1:6301 127.0.0.1 6301 @ master 127.0.0.1 6302+slave slave 127.0.0.1:6300 127.0.0.1 6300 @ master 127.0.0.1 6302-odown master master 127.0.0.1 6300+slave-reconf-inprog slave 127.0.0.1:6301 127.0.0.1 6301 @ master 127.0.0.1 6300+slave-reconf-done slave 127.0.0.1:6301 127.0.0.1 6301 @ master 127.0.0.1 6300+failover-end master master 127.0.0.1 6300+switch-master master 127.0.0.1 6300 127.0.0.1 6302+convert-to-slave slave 127.0.0.1:6300 127.0.0.1 6300 @ master 127.0.0.1 6302
Wie aus dem Protokoll ersichtlich ist, hat der Master-Slave-Schalter die folgenden Vorgänge ausgeführt:
1 . SwitchSlave2 Für den neuen Master wird Slaveof 127.0.0.1 6300 in redis_slave2.conf automatisch gelöscht.
2. Aktualisieren Sie Slaveof 127.0.0.1 6300 in redis_slave1.conf automatisch auf Slaveof 127.0.0.1 6302 und verwenden Sie Slave2 als neuen Master. 3.Nachdem der ursprüngliche Master neu gestartet wurde, wird er als Slave verwendet und der Slave von 127.0.0.1 6302 wird automatisch zu redis_master.conf hinzugefügt.
Master-Slave-Synchronisationstest nach Neustart des Original-Masters durchführen
Original-MasterSchlüssel abc auf 888 aktualisieren, da dies der Fall ist Jetzt ein Sklave. Das Update ist also fehlgeschlagen.
127.0.0.1:6300> set abc 888(error) READONLY You can't write against a read only slave.
Slave2Schlüssel abc auf 888 aktualisieren
127.0.0.1:6302> set abc 888OK127.0.0.1:6302> get abc"888"Original-Master, Slave1 prüft, ob er synchronisiert ist
Original-Master
127.0.0.1:6300> get abc"888"
Slave1
127.0.0.1:6301> get abc"888"Nach der Inspektion, nach dem Master-Slave-Wechsel, fungiert Slave2 als neuer Master und andere Server dienen als Slaves und können normal verwendet werden. In diesem Artikel werden die relevanten Vorgänge der Redis-Master-Slave-Synchronisierung und der Lese-/Schreibtrennungseinstellungen erläutert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website. Verwandte Empfehlungen:
Relevante Inhalte zur PHP-Generierung einer eindeutigen RequestID-Klasse
php json_encode unterstützt die Lösung zum Objektieren privater Attribute nicht
Das obige ist der detaillierte Inhalt vonVerwandte Vorgänge der Redis-Master-Slave-Synchronisierung und der Lese-/Schreib-Trennungseinstellungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!