Heim  >  Artikel  >  Datenbank  >  Wie implementiert Redis die Master-Slave-Replikation?

Wie implementiert Redis die Master-Slave-Replikation?

PHPz
PHPznach vorne
2023-05-29 14:21:351686Durchsuche

    1. Was ist Master&Slave?

    Dies nennen wir Master-Slave-Replikation. Nachdem die Hostdaten aktualisiert wurden, werden sie gemäß der Konfiguration und Richtlinie automatisch mit dem Master-/Slave-Mechanismus synchronisiert zum Schreiben und der Slave hauptsächlich zum Lesen.

    2. Was kann es?

    1. Lese- und Schreibtrennung;

    2.

    3. Wie wird gespielt?

    1. Ausgestattet mit Slave (Bibliothek), aber nicht Master (Bibliothek);

    2. Slaveof [Hauptbibliothek-IP] #; 🎜🎜 #

    • Ergänzung: Jedes Mal, wenn der Slave vom Master getrennt wird, muss er erneut verbunden werden, es sei denn, Sie konfigurieren ihn in der redis.conf-Datei;

      #🎜🎜 #

    • Geben Sie info replication ein, um Redis-Master-Slave-Informationen anzuzeigen.
    • 3. Konfigurationsdateidetails ändern

    - Mehrere redis.conf-Dateien kopieren

    #🎜🎜 ## ??

    -PID-Dateiname

    Wie implementiert Redis die Master-Slave-Replikation?

    -Protokolldateiname

    Wie implementiert Redis die Master-Slave-Replikation?

    #🎜 🎜#- Dump.rdb-Name

    Wie implementiert Redis die Master-Slave-Replikation?

    4. 3 gängige Tricks

    -Ein Meister und zwei Diener#🎜🎜 #

    Wie implementiert Redis die Master-Slave-Replikation?

    Ein Master, zwei Slaves, der Slave kann nur lesen, aber nicht schreiben; wenn der Slave vom Master getrennt wird, muss der Slave erneut verbunden werden, um die Verbindung herzustellen vorherige Master-Slave-Beziehung; nachdem der Master aufgelegt hat, bleibt die Master-Beziehung bestehen und kann durch einen Neustart des Masters wiederhergestellt werden.

    - Der vorherige Slave kann der Master des nächsten Slaves sein, und der Slave kann auch andere Slaves Verbindungs- und Synchronisationsanfragen empfangen, dann fungiert der Slave als Master des nächsten Slaves in der Kette. Dadurch kann der Schreibdruck des Masters effektiv reduziert werden. Wenn der Slave-Server auf halbem Weg den Master-Server für die Datensynchronisierung wechselt, werden die alten Daten gelöscht und die Synchronisierung mit dem neuesten Master-Server wird wiederhergestellt. Wie implementiert Redis die Master-Slave-Replikation?

    - Konzentrieren Sie sich auf Kunden

    Wenn der Master auflegt, kann der Slave den Befehl „slaveof nobody“ eingeben, um die Synchronisierung des aktuellen Redis mit anderen Redis-Daten des Masters zu stoppen und ihn umzuschalten in Master Redis.

    Wie implementiert Redis die Master-Slave-Replikation? 4. Replikationsprinzip

    1. Nachdem der Slave gestartet ist und sich erfolgreich mit dem Master verbunden hat, sendet er einen Synchronisierungsbefehl; erhält den Befehl zum Starten. Nach dem Speichervorgang werden alle empfangenen Befehle zum Ändern des Datensatzes gleichzeitig gesammelt. Nachdem der Hintergrundprozess ausgeführt wurde, überträgt der Master die gesamte Datendatei an den Slave, um eine vollständige Synchronisierung durchzuführen. 🎜🎜#

    3, Vollständige Kopie: Der Slave-Dienst speichert und lädt die Datenbankdateidaten in den Speicher;

    4: Der Master übergibt weiterhin alle neu gesammelten Änderungsbefehle an den Slave drehen, vollständige Synchronisierung;

    Wie implementiert Redis die Master-Slave-Replikation?5 Aber solange der Master wieder verbunden ist, wird automatisch eine vollständige Synchronisierung (vollständige Kopie) durchgeführt.

    5. Sentinel-Modus (Sentinel)

    Eine kundenorientierte automatische Version, die im Hintergrund überwachen kann, ob die Master-Bibliothek fehlerhaft ist Konvertieren Sie die Slave-Bibliothek basierend auf der Anzahl der Stimmen automatisch in die Hauptbibliothek. Eine Gruppe von Sentinels kann mehrere Master gleichzeitig überwachen.

    Wie implementiert Redis die Master-Slave-Replikation?Verwendungsschritte:

    1. Erstellen Sie eine neue sentinel.conf-Datei im selben Verzeichnis wie die entsprechende redis.conf des Masters Darf nicht falsch sein;# 🎜🎜#

    2. Konfigurieren Sie den Sentinel und geben Sie den Inhalt in die Datei sentinel.conf ein:

    sentinel-Monitor Der Name der überwachten Datenbank (benennen Sie sie selbst) IP-Port 1

    Erläuterung: Die letzte Nummer 1 oben bedeutet, dass der Slave nach dem Auflegen des Hosts abstimmt, um zu sehen, wer übernimmt die Rolle des Gastgebers. Nach Erhalt der Anzahl der Stimmen wird der Slave zum Gastgeber.

    3. Sentinel-Modus starten:

    Befehl: redis-sentinel /myredis/sentinel.conf # 🎜🎜#

    Hinweis: Die oben genannten sentinel.conf-Pfade werden entsprechend ihren tatsächlichen Bedingungen konfiguriert

    6 copying# 🎜🎜#

    Verzögerung: Da alle Schreibvorgänge auf dem Master ausgeführt und dann mit dem Slave synchronisiert werden, kommt es zu einer gewissen Verzögerung bei der Synchronisierung vom Master zur Slave-Maschine, wenn das System sehr ausgelastet ist Probleme Es wird schwerwiegender sein, und die Zunahme der Anzahl der Slave-Maschinen wird dieses Problem auch schwerwiegender machen.

    Redis-Master, Slave-Knoten-Bereitstellungsdetails

      1 Erstellen Sie zwei redis.conf-Dateien, eine Master- und eine Slave-Datei
    • redis_6379.conf
      redis_6380.conf

      2 Hauptkonfiguration

      bind 127.0.0.1
      port 6379
      protected-mode yes
      daemonize yes
      pidfile /var/run/redis_6379.pid
      logfile "/Data/apps/redis-3.2.12/logs/redis_6379.log"
      dbfilename dump_6379.rdb
      dir /Data/apps/redis-3.2.12/workplace
      requirepass paopao
    • 3. Slave-Konferenz-Hauptkonfiguration
    • bind 127.0.0.1
      port 6380
      protected-mode yes
      daemonize yes
      pidfile /var/run/redis_6380.pid
      logfile "/Data/apps/redis-3.2.12/logs/redis_6380.log"
      dbfilename dump_6380.rdb
      dir /Data/apps/redis-3.2.12/workplace
      slaveof 127.0.0.1 6379
      masterauth paopao

      4. Starten Sie den Master-Slave-Redis-Server-Prozess

      redis-server /Data/apps/redis-3.2.12/conf/redis_6379.conf
      redis-server /Data/apps/redis-3.2.12/conf/redis_6380.conf
    • 5. Andere verwandte Konfiguration# 🎜🎜 #
      # 当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:
      # 1) 如果slave-serve-stale-data设置为yes(默认设置),从库会继续相应客户端的请求
      # 2) 如果slave-serve-stale-data是指为no,除去INFO和SLAVOF命令之外的任何请求都会返回一个
      #    错误"SYNC with master in progress"
      slave-serve-stale-data yes
      slave-read-only yes
      # 从库会按照一个时间间隔向主库发送PINGs.可以通过repl-ping-slave-period设置这个时间间隔,默认是10秒
      repl-ping-slave-period 10
      # repl-timeout 设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒
      # 一定要确保repl-timeout大于repl-ping-slave-period
      repl-timeout 60
      # slave节点磁盘慢, 网速快时, 置为yes, master上的rdb文件将以socket方式传输, 跳过磁盘存储
      repl-diskless-sync no
      # 传输前等待秒数, 为了等待更多的slave节点加入
      repl-diskless-sync-delay 5
      # 传输时,是否禁用tcp nodelay
      repl-disable-tcp-nodelay no
      # 复制缓冲区大小
      repl-backlog-size 1mb
      # 复制缓冲区释放周期
      repl-backlog-ttl 3600
      # 为了sentinal模式, 选举master准备, 数值越小, 优先级越高
      slave-priority 100
      # require at least 3 slaves with a lag <= 10 seconds use
      min-slaves-to-write 3
      min-slaves-max-lag 10
      # 可覆盖bind, port 配置, 对外ip port
      slave-announce-ip 5.5.5.5
      slave-announce-port 1234

    Das obige ist der detaillierte Inhalt vonWie implementiert Redis die Master-Slave-Replikation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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