Detaillierte Erläuterung der Redis-Persistenz, Master-Slave-Synchronisierung und Sentinel unter Linux

Detaillierte Erläuterung der Redis-Persistenz, Master-Slave-Synchronisierung und Sentinel unter Linux

1.0 Redis-Persistenz

Redis ist eine In-Memory-Datenbank. Sobald der Serverprozess beendet wird, gehen die Datenbankdaten verloren. Um dieses Problem zu lösen, bietet Redis zwei Persistenzlösungen, um die Daten im Speicher auf der Festplatte zu speichern und so Datenverlust zu vermeiden.

1|1RDB-Persistenz

Redis bietet die RDB-Persistenzfunktion, die innerhalb eines bestimmten Zeitintervalls einen Point-in-Time-Snapshot des Datensatzes generiert. Diese Funktion kann den Status von Redis im Speicher auf der Festplatte speichern. Die durch RDB-Persistenz generierte RDB-Datei ist eine komprimierte Binärdatei. Diese Datei wird auf der Festplatte gespeichert. Redis kann den Datenbankstatus zu diesem Zeitpunkt über diese Datei wiederherstellen.

Dies kann manuell durchgeführt werden.

Es kann auch in redis.conf konfiguriert und regelmäßig ausgeführt werden.

Vorteile: hohe Geschwindigkeit, geeignet für Backups, Master-Slave-Replikation basiert auf der RDB-Persistenzfunktion

rdb löst rdb mithilfe des Save-Befehls in Redis aus

RDB-Konfigurationsparameter:

Port 6379 
dämonisieren ja 
pid-Datei /data/6379/redis.pid
Loglevel-Hinweis 
Protokolldatei "/data/6379/redis.log"
dir /data/6379 
geschützter Modus ja 
Datenbankdateiname dbmp.rdb
sparen 900 1
sparen 300 10 
sparen 60 10000

Alle 900 Sekunden gibt es eine Operation, die persistent ist

Sparen Sie 900 Sekunden 1 Änderungsvorgang

Sparen Sie 300 Sekunden 10 Operationen

Sparen Sie 60 Sekunden 10000 Operationen

2. Lösen Sie die RDB-Persistenz aus oder speichern Sie den Befehl manuell, um die Persistenzdatei dump.rdb zu generieren

3. Starten Sie Redis neu, Daten gehen nicht mehr verloren

4. RDB-Datendateien sind Binärdateien und können nicht manuell gelesen werden.

1|2 Redis-Persistenz-AOF

AOF (Nur-Anhängen-Protokolldatei)

Zeichnen Sie alle vom Server ausgeführten Änderungsvorgangsbefehle auf (z. B. Set Del usw.) und stellen Sie den Datensatz wieder her, indem Sie diese Befehle beim Starten des Servers erneut ausführen.

Alle Befehle in der AOF-Datei werden im Format des Redis-Protokolls gespeichert und neue Befehle werden an das Ende der Datei angehängt.

Vorteile: Das maximale Programm garantiert, dass keine Daten verloren gehen

Nachteil: Der Logdatensatz ist sehr groß

Konfiguration

1. Fügen Sie in der Konfigurationsdatei den Parameter aof hinzu

Fügen Sie Parameter in redis-6379.conf hinzu, um die aof-Funktion zu aktivieren

nur anhängen ja
appendfsync jede Sekunde

2. Starten Sie die Redis-Datenbank neu und laden Sie die AOF-Funktion

3. Überprüfen Sie, ob das Redis-Datenverzeichnis /data/6379/ eine AOF-Datei generiert

[root@web02 6379]# ls
appendonly.aof dbmp.rdb redis.log

4. Melden Sie sich bei redis-cli an, schreiben Sie Daten und überwachen Sie AOF-Dateiinformationen in Echtzeit

tail -f appendonly.aof

5. Legen Sie einen neuen Schlüssel fest, überprüfen Sie die AOF-Informationen, schließen Sie dann Redis und prüfen Sie, ob die Daten persistent sind

redis-cli -a Redhat-Shutdown
redis-server /etc/redis.conf
redis-cli -ein Redhat

Ohne Redis neu zu starten, wechseln Sie von RDB-Daten zu AOF-Daten

1. Konfigurieren Sie Redis zur Unterstützung der RDB-Persistenz

2. Starten Sie den Redis-Client und wechseln Sie vorübergehend über den Befehl in den AOF-Modus

127.0.0.1:6379> CONFIG set anhängen nur ja
OK
127.0.0.1:6379> CONFIG SET speichern ""
OK

3. Überprüfen Sie, ob der Datenpersistenzmodus rdb oder aof ist, überprüfen Sie die Datei appendonly.aof und überprüfen Sie die Datenänderungen

tail -f appendonly.aof

4. Zu diesem Zeitpunkt ist aof noch nicht dauerhaft wirksam. Schreiben Sie die Parameter in die Konfigurationsdatei

Bearbeiten Sie redis-6379.conf und fügen Sie die folgenden Parameter hinzu

nur anhängen ja
appendfsync jede Sekunde

2|0 Master-Slave-Synchronisation

Implementierung der Redis-Master-Slave-Synchronisation

1. Bereiten Sie drei Redis-Datenbanken vor. Redis unterstützt mehrere Instanzen

Drei Konfigurationsdateien, nur die Ports sind unterschiedlich

Fügen Sie in den drei Konfigurationsdateien die Master-Slave-Synchronisierungsparameter hinzu

redis-6379.conf

Port 6379 
dämonisieren ja 
pid-Datei /data/6379/redis.pid
Loglevel-Hinweis 
Protokolldatei "/data/6379/redis.log"
dir /data/6379 
geschützter Modus ja 
Datenbankdateiname dbmp.rdb
sparen 900 1
sparen 300 10 
sparen 60 10000

redis-6380.conf

Port 6380 
dämonisieren ja 
pid-Datei /data/6380/redis.pid
Loglevel-Hinweis 
Protokolldatei "/data/6380/redis.log"
dir /data/6380 
geschützter Modus ja 
Datenbankdateiname dbmp.rdb
sparen 900 1
sparen 300 10 
sparen 60 10000
Sklave von 127.0.0.1 6379

redis-6381.conf

Port 6381 
dämonisieren ja 
pid-Datei /data/6381/redis.pid
Loglevel-Hinweis 
Protokolldatei "/data/6381/redis.log"
dir /data/6381 
geschützter Modus ja 
Datenbankdateiname dbmp.rdb
sparen 900 1
sparen 300 10 
sparen 60 10000
Sklave von 127.0.0.1 6379

2. Starten Sie drei Datenbankinstanzen und überprüfen Sie die Master-Slave-Synchronisierungsidentität

redis-cli -p 6379 Info-Replikation 
redis-cli -p 6380 Info-Replikation 
redis-cli -p 6381 Info-Replikation

3: Überprüfen Sie die Informationen wie folgt und prüfen Sie, ob sie synchronisiert sind

4. Was passiert, wenn meine Hauptdatenbank abstürzt? ?

Lösung:

1. Wechseln Sie manuell die Master-Slave-Identität und wählen Sie eine neue Master-Datenbank

1. Beenden Sie die Hauptbibliothek 6379
2. Deaktivieren Sie Ihre Slave-Identität auf 6380
Sklave von niemandem
3. Geben Sie die neue Besitzeridentität auf 6381 ein
salveof 127.0.0.1 6380
4. Nachdem die Änderung abgeschlossen ist, müssen Sie auch die Konfigurationsdatei ändern, um sie dauerhaft zu machen

2. Verwenden Sie Sentinel, um automatisch einen neuen Eigentümer zu wählen

2|1redis-Wächter:

Wächterfunktion:

Sentinel erkennt, ob die Master-Slave-Architektur normal ist. Wenn die Master-Datenbank ausfällt, ändert Sentinel redis.conf automatisch, um die Slaveof-Direktive hinzuzufügen/zu löschen.

Redis Sentinel-Installationskonfiguration:

1. Bereiten Sie drei Redis-Instanzen vor, einen Master und zwei Slaves

Weitere Einzelheiten finden Sie in der Redis-Master-Slave-Konfiguration oben.

2. Drei Datenbankinstanzen vorbereiten und starten

redis-server redis-6379.conf
redis-server redis-6380.conf
redis-server redis-6381.conf

3. Bereiten Sie drei Sentinels vor und beginnen Sie mit der Überwachung der Master-Slave-Architektur

Bereiten Sie drei Konfigurationsdateien vor, Sentinel-Dateien

redis-26379.conf

Port 26379 
dir /var/redis/data/
Protokolldatei "26379.log"
Sentinel-Monitor SBMaster 127.0.0.1 6379 2
Sentinel-Down nach Millisekunden QSmaster 30000
Sentinel Parallel-Syncs SBMaster 1
Sentinel Failover-Timeout SBMaster 180000
dämonisieren ja

redis-26380.conf

Port 26380 
dir /var/redis/data/
Protokolldatei "26380.log"
Sentinel-Monitor SBMaster 127.0.0.1 6379 2
Sentinel-Down nach Millisekunden QSmaster 30000
Sentinel Parallel-Syncs SBMaster 1
Sentinel Failover-Timeout SBMaster 180000
dämonisieren ja

redis-26381.conf

Port 26381 
dir /var/redis/data/
Protokolldatei "26381.log"
Sentinel-Monitor SBMaster 127.0.0.1 6379 2
Sentinel-Down nach Millisekunden sbmaster 30000
Sentinel Parallel-Syncs SBMaster 1
Sentinel Failover-Timeout SBMaster 180000
dämonisieren ja

4. Starten Sie drei Sentinel-Instanzen

redis-sentinel redis-26380.conf 
redis-sentinel redis-26379.conf 
redis-sentinel redis-26381.conf

Überprüfen Sie, ob der Sentinel-Status normal ist

Nur wenn die folgenden Informationen gefunden werden und mit den folgenden übereinstimmen, ist es normal

redis-cli -p 26379 Info-Wächter

# Wächter
sentinel_masters:1
Sentinel-Neigung: 0
sentinel_running_scripts:0
Sentinel_Scripts_Warteschlangenlänge: 0
Fehlerflags simulieren: 0
Master0:Name=sbmaster,Status=ok,Adresse=127.0.0.1:6380,Slaves=2,Wächter=3

5. Automatischer Wechsel zwischen Master und Slave von Sentinel

1. Beenden Sie die Redis-Datenbank 6379

2. Überprüfen Sie die Identitätsinformationen von 6380 und 6381, um festzustellen, ob sie automatisch zwischen Master und Slave umgeschaltet werden (der Wechsel dauert 30 Sekunden).

3. Starten Sie die von 6379 aufgehängte Datenbank manuell, um zu prüfen, ob sie von Sentinel zum Master-Slave-Informationscluster hinzugefügt wird.

Beachten! ! Wenn dies nicht erfolgreich ist, müssen Sie alle Sentinel-Konfigurationsdateien löschen und von vorne beginnen. Hinweis! ! Wenn dies nicht erfolgreich ist, müssen Sie alle Sentinel-Konfigurationsdateien löschen und von vorne beginnen. Hinweis! ! Wenn dies fehlschlägt, müssen Sie alle Sentinel-Konfigurationsdateien löschen und von vorne beginnen.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Warum ist Redis schnell? So erreichen Sie hohe Verfügbarkeit und Persistenz
  • Detaillierte Erläuterung der dauerhaften Speicherung von Redis unter Docker
  • Ausführliche Erläuterung zweier Persistenzlösungen von Redis
  • Eine kurze Diskussion über die Persistenz von Redis-Speicherdaten
  • Detaillierte Erläuterung zweier Persistenzlösungen von Redis: RDB und AOF
  • Ausführliche Erklärung zur Redis-Persistenz

<<:  Mysql SQL-Anweisungskommentare

>>:  Lernen Sie die wichtigsten Kenntnisse, die im Vue-Framework beherrscht werden müssen

Artikel empfehlen

Auszeichnungssprache - Stylesheets drucken

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

Kurze Analyse von MySQL Union und Union All

In der Datenbank führen sowohl die Schlüsselwörte...

Detaillierte Erläuterung des Shared-Memory-Mechanismus von Nginx

Der gemeinsam genutzte Speicher von Nginx ist ein...

Die Verbindung zwischen JavaScript und TypeScript

Inhaltsverzeichnis 1. Was ist JavaScript? 2. Wofü...

MySQL-Konfiguration SSL-Master-Slave-Replikation

MySQL5.6 So erstellen Sie SSL-Dateien Offizielle ...

Docker-Netzwerkmodus und Konfigurationsmethode

1. Docker-Netzwerkmodus Wenn Docker Run einen Doc...

MySQL5.7 Master-Slave-Konfigurationsbeispielanalyse

Implementierungsmethode für die MySQL5.7-Master-S...

So generieren Sie eine eindeutige Server-ID in MySQL

Vorwort Wir alle wissen, dass MySQL die Server-ID...

So implementieren Sie die Kontrollkästchen- und Radioausrichtung

Nicht nur das Verhalten verschiedener Browser ist...

JavaScript-Singleton-Modus zum Implementieren benutzerdefinierter Popup-Fenster

In diesem Artikel wird der spezifische Code des J...