Stories

Detail Return Return

【趙渝強老師】Redis的主從複製集羣 - Stories Detail

Redis的主從複製是指將一台Redis服務器的數據,複製到其他的Redis服務器。前者稱為Master主節點,後者稱為Slave從節點。數據的複製是單向的,只能由主節點到從節點。在默認情況下每台Redis服務器都是主節點。一個主節點可以有多個從節點或者沒有從節點,但一個從節點只能有一個主節點。主從複製的作用:

  • 數據備份:Redis主從複製實現了數據的熱備份,是數據持久化之外的一種數據冗餘方式。
  • 故障恢復:當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復。
  • 負載均衡:在主從複製的基礎上配合讀寫分離,可以由主節點提供寫數據服務,並由從節點提供讀數據服務。從而分擔服務器負載。尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高Redis服務器的併發量。
  • 高可用基石:除了上述作用以外,主從複製還是哨兵和集羣能夠實施的基礎,因此説主從複製是Redis高可用的基礎。

視頻講解如下:
https://www.bilibili.com/video/BV1eagPzVEdW/?aid=114868833226...

Redis主從複製的架構有兩種不同的方式,即星型模型與線型模型。如下圖所示:
image.png

在實際生產環境中,星型模型的Redis主從複製架構使用的更加廣泛。

在瞭解到了Redis的主從複製架構後,下表列舉了相關的配置信息
image.png

# 部署Redis主從複製的核心參數:replicaof <masterip> <masterport>。

下面通過具體的步驟來演示如何基於三個節點來部署星型模型的Redis主從複製。
(1)啓動三個Redis實例。

bin/redis-server conf/redis6379.conf
bin/redis-server conf/redis6380.conf
bin/redis-server conf/redis6381.conf

(2)使用ps命令確定後台的Redis進程。

ps -ef|grep redis

# 輸出的信息如下:
root 127715 1 0 09:56 ? 00:00:00 bin/redis-server *:6379
root 127737 1 0 09:58 ? 00:00:00 bin/redis-server *:6380
root 127745 1 0 09:58 ? 00:00:00 bin/redis-server *:6381

(3)使用Redis的客户端登錄Redis主從複製的主節點。

bin/redis-cli

(4)使用info命令查看Redis主從複製的統計信息。

127.0.0.1:6379> info replication

# 輸出的信息如下:

# Replication
role:master
connected_slaves:2
slave0:ip=::1,port=6380,state=online,offset=126,lag=0
slave1:ip=::1,port=6381,state=online,offset=126,lag=1
master_failover_state:no-failover
master_replid:308d9c7931bd283987b72f5facb310280f8bdfee
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:126
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:126

(5)在主節點上寫入數據,驗證從節點上是否能夠讀取出數據。

# 在默認情況下從節點是隻讀狀態。
# 當從節點上插入數據時會出現下面的錯誤信息:

127.0.0.1:6380> set key2 "Hello Redis"
(error) READONLY You can't write against a read only replica.
user avatar shoushoudeqie Avatar renxingdebenma Avatar startshineye Avatar
Favorites 3 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.