目錄
前言
一、概述
二、作用
三、缺點
四、redis主從復制的流程
五、搭建redis主從復制
總結
前言
Redis的主從配置是指在Redis集群中,將一個Redis節點配置為主節點(master),其他節點配置為從節點(slave),主節點負責寫操作和部分讀操作,從節點負責讀操作。
主從配置的作用主要有以下幾點:
提高讀寫性能:主節點負責寫操作,從節點負責讀操作,實現了讀寫分離,有效提高了系統的讀寫性能。從節點可以接受主節點的復制數據,這樣讀操作可以在從節點上執行,減輕了主節點的負載。
提高可用性:主節點故障時,從節點可以接替主節點的角色,繼續提供服務。當主節點恢復后,可以重新加入集群,重新成為從節點,保證了系統的高可用性。
數據備份:從節點通過復制主節點的數據,實現了數據的備份。當主節點故障時,從節點可以提供最新的數據,避免數據丟失。
故障恢復:當主節點故障時,可以通過從節點快速恢復主節點的數據。從節點會自動發現并選舉一個新的主節點,保證系統的正常運行。
擴展性:通過增加從節點,可以提高系統的讀取性能和容量。當系統需求增加時,可以通過增加從節點來擴展系統的處理能力。
總的來說,主從配置可以提高Redis集群的性能、可用性和擴展性,保證數據的備份和故障恢復。
?
一、概述
redis主從復制是指將一臺Redis服務器的數據,復制到其他的Redis服務器。前者稱為主節點(Master),后者稱為從節點(Slave);數據的復制是單向的,只能由主節點到從節點。
二、作用
數據冗余:主從復制實現了數據的熱備份,是持久化之外的一種數據冗余方式。
故障恢復:當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復;實際上是一種服務的冗余。
負載均衡:在主從復制的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫Redis數據時應用連接主節點,讀Redis數據時應用連接從節點),分擔服務器負載;尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高Redis服務器的并發量。
高可用:除了上述作用以外,主從復制還是哨兵和集群能夠實施的基礎,因此說主從復制是Redis高可用的基礎。
三、缺點
故障恢復無法自動化;
寫操作無法負載均衡;
存儲能力受到單機的限制。
四、redis主從復制的流程
第一步:若啟動一個Slave機器進程,則它會向Master機器發送一個“sync command”命令,請求同步接。
第二步:無論是第一次連接還是重新連接,Master機器都會啟動一個后臺進程,將數據快照保存到數據文件中(執行rdb操作),同時Master還會記錄修改數據的所有命令并緩存在數據文件中。?
第三步:后臺進程完成緩存操作之后,Maste機器就會向Slave機器發送數據文件,Slave端機器將數據文件保存到硬盤上,然后將其加載到內存中,接著Master機器就會將修改數據的所有操作一并發送給Slave端機器。若Slave出現故障導致宕機,則恢復正常后會自動重新連接。
第四步:Master機器收到Slave端機器的連接后,將其完整的數據文件發送給Slave端機器,如果Mater同時收到多個Slave發來的同步請求,則Master會在后臺啟動一個進程以保存數據文件,然后將其發送給所有的Slave端機器,確保所有的Slave端機器都正常。
五、搭建redis主從復制
我們搭建一主三從的模式
1.在主服務上的操作
修改配置文件vim /etc/redis.conf
設置監聽地址
關閉保護模塊
設置允許后臺運行
重啟服務,查看端口
[root@localhost ~]# vim /etc/redis.conf
[root@localhost ~]# systemctl restart redis
[root@localhost ~]# netstat -anput |grep redis
tcp 0 0 192.168.73.10:6379 0.0.0.0:* LISTEN 12833/redis-server
[root@localhost ~]#
2.在從上的操作
將 配置文件redis.conf 拷貝,并以端口號命令例如
[root@localhost etc]# cp redis.conf /opt/redis_6380.conf
[root@localhost etc]# cp redis.conf /opt/redis_6381.conf
[root@localhost etc]# cp redis.conf /opt/redis_6382.conf
[root@localhost etc]#
分別編輯他們需要修改的內容
修改配置文件
?? ?bind ?0.0.0.0
?? ?port? 不同的端口號
?? ?protected-mode = no
?? ?daemonize = yes
?? ?slaveof 主的IP 主的端口
編輯完成之將主從全部啟動,并驗證
[root@localhost etc]# cp redis.conf /opt/redis_6380.conf
[root@localhost etc]# cp redis.conf /opt/redis_6381.conf
[root@localhost etc]# cp redis.conf /opt/redis_6382.conf
[root@localhost etc]# vim /opt/redis_6380.conf
[root@localhost etc]# vim /opt/redis_6381.conf
[root@localhost etc]# vim /opt/redis_6382.conf
[root@localhost etc]# redis-server /opt/redis_6380.conf
[root@localhost etc]# redis-server /opt/redis_6381.conf
[root@localhost etc]# redis-server /opt/redis_6382.conf
[root@localhost etc]# netstat -anput |grep redis
tcp 0 0 192.168.73.10:6379 0.0.0.0:* LISTEN 12833/redis-server
tcp 0 0 0.0.0.0:6380 0.0.0.0:* LISTEN 13699/redis-server
tcp 0 0 0.0.0.0:6381 0.0.0.0:* LISTEN 13711/redis-server
tcp 0 0 0.0.0.0:6382 0.0.0.0:* LISTEN 13723/redis-server
tcp 0 0 192.168.73.10:37065 192.168.73.10:6379 ESTABLISHED 13723/redis-server
tcp 0 0 192.168.73.10:34195 192.168.73.10:6379 ESTABLISHED 13699/redis-server
tcp 0 0 192.168.73.10:6379 192.168.73.10:37065 ESTABLISHED 12833/redis-server
tcp 0 0 192.168.73.10:6379 192.168.73.10:34195 ESTABLISHED 12833/redis-server
tcp 0 0 192.168.73.10:46341 192.168.73.10:6379 ESTABLISHED 13711/redis-server
tcp 0 0 192.168.73.10:6379 192.168.73.10:46341 ESTABLISHED 12833/redis-server
[root@localhost etc]#
3、驗證
使用redis-cli命令行登錄redis服務器,輸入role指令查看狀態
[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6379
192.168.73.10:6379> role
1) "master"
2) (integer) 435
3) 1) 1) "192.168.73.10"2) "6380"3) "435"2) 1) "192.168.73.10"2) "6381"3) "435"3) 1) "192.168.73.10"2) "6382"3) "435"
192.168.73.10:6379>
在master節點上,錄入數據,在slave節點上查看到對應數據即可
master錄入
192.168.73.10:6379> set hy hy
OK
192.168.73.10:6379> get hy
"hy"
192.168.73.10:6379>
slave查看
[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6380
192.168.73.10:6380> get hy
"hy"
192.168.73.10:6380> exit
[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6381
192.168.73.10:6381> get hy
"hy"
192.168.73.10:6381> exit
[root@localhost etc]# redis-cli -h 192.168.73.10 -p 6382
192.168.73.10:6382> get hy
"hy"
192.168.73.10:6382>
驗證成功
總結
在配置主從復制上大家要注意的是配置項的修改
master服務器需要改的地方:
bind? 監聽地址 |
port? 端口 |
protected-mode = no |
daemonize = yes |
slave需要修改的是
bind? 監聽地址 |
port ?6380 |
protected-mode = no |
daemonize = yes |
slaveof 192.168.115.160 6379 |
并且需要注意去監聽端口。