Heim  >  Artikel  >  Datenbank  >  Einführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien

Einführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien

藏色散人
藏色散人nach vorne
2020-01-22 12:02:442883Durchsuche

Einführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien

redis ist ein Schlüsselwertspeichersystem. Ähnlich wie Memcached unterstützt es relativ mehr gespeicherte Werttypen, einschließlich String (String), Liste (verknüpfte Liste), Set (Satz), Zset (sortierter Satz – geordneter Satz) und Hash (Hash-Typ). Diese Datentypen unterstützen alle Push/Pop-, Add/Remove-, Schnitt-, Vereinigungs-, Differenz- und umfangreichere Operationen und diese Operationen sind alle atomar. Auf dieser Basis unterstützt Redis verschiedene Sortierarten. Wie bei Memcached werden Daten im Speicher zwischengespeichert, um die Effizienz sicherzustellen. Der Unterschied besteht darin, dass Redis regelmäßig aktualisierte Daten auf die Festplatte schreibt oder Änderungsvorgänge in zusätzliche Datensatzdateien schreibt und auf dieser Grundlage eine Master-Slave-Synchronisation (Master-Slave) erreicht wird.

Übersicht

In bestehenden Unternehmen nutzen 80 % der Unternehmen meist den eigenständigen Redis-Dienst. In tatsächlichen Szenarien handelt es sich um einen einzelnen Knoten Redis anfällig für Risiken.

Probleme auftreten

1. Wir stellen es auf einem Redis-Server bereit. Wenn ein Maschinenausfall auftritt, müssen wir auf einen anderen Server migrieren und sicherstellen, dass die Daten synchronisiert sind. Daten sind das Wichtigste. Wenn es Ihnen egal ist, werden Sie Redis grundsätzlich nicht verwenden. 2. Kapazitätsengpass. Wenn wir den Redis-Speicher von 16G auf 64G erweitern müssen, wird eine einzelne Maschine diese Anforderung definitiv nicht erfüllen können. Natürlich können Sie eine neue 128G-Maschine kaufen.

Lösung

Um eine größere Speicherkapazität der verteilten Datenbank zu erreichen und einem hohen gleichzeitigen Zugriff standzuhalten, werden wir die ursprünglichen zentralisierten Daten konvertieren

Die Daten in der Bibliothek werden auf mehreren anderen Netzwerkknoten gespeichert.

Um dieses Einzelknotenproblem zu lösen, wird Redis auch mehrere Kopien von Daten auf

anderen Knoten zur Replikation bereitstellen, um eine hohe Verfügbarkeit von Redis und eine redundante Datensicherung zu erreichen.

Dies sorgt für die hohe Verfügbarkeit von Daten und Diensten.

Master-Slave-Replikation

Was ist Master-Slave-Replikation?

Master -Slave-Replikation bezieht sich auf das Kopieren von Daten von einem Redis-Server auf andere Redis-Server. Ersterer wird als Master-Knoten (Master) und letzterer als Slave-Knoten (Slave) bezeichnet. Die Datenreplikation erfolgt in eine Richtung und kann nur vom Master-Knoten zum Slave-Knoten erfolgen.

Standardmäßig ist jeder Redis-Server ein Master-Knoten und ein Master-Knoten kann mehrere Slave-Knoten haben (oder keine Slave-Knoten), aber ein Slave-Knoten kann nur einen Master-Knoten haben.

Die Rolle der Master-Slave-ReplikationEinführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien

1. Datenredundanz: Master-Slave-Replikation realisiert Hot-Backup von data ist eine andere Datenredundanzmethode als Persistenz. 2. Fehlerbehebung: Wenn ein Problem auf dem Master-Knoten auftritt, kann der Slave-Knoten Dienste bereitstellen, um eine schnelle Fehlerbehebung zu erreichen

;

3. Lastausgleich: Basierend auf der Master-Slave-Replikation in Kombination mit der Lese-Schreib-Trennung kann der Master-Knoten Schreibdienste bereitstellen und die Slave-Knoten können Lesedienste bereitstellen (d. h Beim Schreiben von Redis-Daten stellt die Anwendung eine Verbindung zum Master-Knoten her. Verwenden Sie beim Lesen von Redis-Daten die Verbindung zum Slave-Knoten, um die Serverlast zu teilen, insbesondere in dem Szenario, in dem weniger geschrieben und mehr gelesen wird Slave-Knoten

werden verwendet, um die Leselast zu teilen, was die Parallelität des Redis-Servers erheblich erhöhen kann.

4. Lese- und Schreibtrennung: Es kann verwendet werden, um die Lese- und Schreibtrennung, das Schreiben der Hauptbibliothek und das Lesen der Nebenbibliothek zu realisieren. Die Lese- und Schreibtrennung kann nicht nur die Ladekapazität der Server, kann aber auch je nach Bedarf verwendet werden. 5. Der Grundstein für hohe Verfügbarkeit: Master-Slave-Replikation ist auch die Grundlage für die Implementierung von Sentinels und Clustern Daher ist die Master-Slave-Replikation die Grundlage für Redis Hochverfügbarkeit.

Master-Slave-Replikation aktivieren

Master-Slave-Replikation vom Slave-Knoten aktivieren Es gibt 3 Möglichkeiten:

1. Konfigurationsdatei: Zur Konfigurationsdatei des Slave-Servers hinzufügen:

slaveof <masterip>
<masterport>

2. Startbefehl:

nach redis-server hinzufügen Startbefehl

--slaveof <masterip>
<masterport>

3. 客户端命令: Redis 服务器启动后,直接通过客户端执行命令:

slaveof
<masterip>
<masterport>

则该 Redis 实例成为从节点。

通过 info replication 命令可以看到复制的一些信息主从复制原理主从复制过程大体可以分为 3 个阶段:连接建立阶段(即准备阶段)、数据同步阶段、命令传播阶段。在从节点执行 slaveof 命令后,复制过程便开始运作,下面图示大概可以看到,从图中可以看出复制过程大致分为 6 个过程

Einführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien

主从配置之后的日志记录也可以看出这个流程

1)保存主节点(master)信息。

执行 slaveof 后 Redis 会打印如下日志:

Einführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien

2)从节点(slave)内部通过每秒运行的定时任务维护复制相关逻辑,当定时任务发现存在新的主节点后,会尝试与该节点建立网络连接

Einführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien

从节点与主节点建立网络连接

从节点会建立一个 socket 套接字,从节点建立了一个端口为 51234 的套接字,专门用于接受主节点发送的复制命令。从节点连接成功后打印如下日志:

Einführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien

如果从节点无法建立连接,定时任务会无限重试直到连接成功或者执行 slaveof noone 取消复制关于连接失败,可以在从节点执行 info replication 查看<span style="font-size: 14px; line-height: 1.76em;">master_link_down_since_seconds</span> 指标,它会记录与主节点连接失败的系统时间。从

节点连接主节点失败时也会每秒打印如下日志,方便发现问题:

# Error condition on socket for SYNC: {socket_error_reason}

3)发送 ping 命令。

连接建立成功后从节点发送 ping 请求进行首次通信,ping 请求主要目的如下:

·检测主从之间网络套接字是否可用。

·检测主节点当前是否可接受处理命令。

如果发送 ping 命令后,从节点没有收到主节点的 pong 回复或者超时,比如网络超时或者主节点正在阻塞无法响应命令,从节点会断开复制连接,下次定时任务会发起重

Einführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien

从节点发送的 ping 命令成功返回,Redis 打印如下日志,并继续后续复制流程:

Einführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien

4)权限验证。如果主节点设置了 requirepass 参数,则需要密码验证,从节点必须配

置 masterauth 参数保证与主节点相同的密码才能通过验证;如果验证失败复制将终

止,从节点重新发起复制流程。

5)同步数据集。主从复制连接正常通信后,对于首次建立复制的场景,主节点会把持

有的数据全部发送给从节点,这部分操作是耗时最长的步骤。

6)命令持续复制。当主节点把当前的数据同步给从节点后,便完成了复制的建立流程。

接下来主节点会持续地把写命令发送给从节点,保证主从数据一致性。

更多redis知识请关注redis数据库教程栏目。

Das obige ist der detaillierte Inhalt vonEinführung in die Redis-Master-Slave-Replikation und detaillierte Erläuterung ihrer Prinzipien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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