Redis的主從復制是指將一臺Redis服務器的數據,復制到其他的Redis服務器。前者稱為Master主節點,后者稱為Slave從節點。數據的復制是單向的,只能由主節點到從節點。在默認情況下每臺Redis服務器都是主節點。一個主節點可以有多個從節點或者沒有從節點,但一個從節點只能有一個主節點。主從復制的作用:
- 數據備份:Redis主從復制實現了數據的熱備份,是數據持久化之外的一種數據冗余方式。
- 故障恢復:當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復。
- 負載均衡:在主從復制的基礎上配合讀寫分離,可以由主節點提供寫數據服務,并由從節點提供讀數據服務。從而分擔服務器負載。尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高Redis服務器的并發量。
- 高可用基石:除了上述作用以外,主從復制還是哨兵和集群能夠實施的基礎,因此說主從復制是Redis高可用的基礎。
視頻講解如下 |
---|
【趙渝強老師】Redis主從復制集群的架構 |
Redis主從復制的架構有兩種不同的方式,即星型模型與線型模型。如下圖所示:
在實際生產環境中,星型模型的Redis主從復制架構使用的更加廣泛。
在了解到了Redis的主從復制架構后,下表列舉了相關的配置信息
# 部署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.