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.
1. Lese- und Schreibtrennung;
2.
1. Ausgestattet mit Slave (Bibliothek), aber nicht Master (Bibliothek);
2. Slaveof [Hauptbibliothek-IP] #; 🎜🎜 #
#🎜🎜 #
- Mehrere redis.conf-Dateien kopieren
#🎜🎜 ## ??
-PID-Dateiname -Protokolldateiname#🎜 🎜#- Dump.rdb-Name
4. 3 gängige Tricks-Ein Meister und zwei Diener#🎜🎜 #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.
- Konzentrieren Sie sich auf KundenWenn 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.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;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.
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:
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:
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
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
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
# 当从库同主机失去连接或者复制正在进行,从机库有两种运行方式: # 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!