Redis 主從復制


  

常見的主從形式

 

第三種是因為slave太多,都從master同步數據,master IO壓力很大,所以拿一部分slave也作為master。

一個slave只能有一個master,一個master可以有多個slave。

主從復制不會阻塞redis服務器,redis服務器在主從復制的同時仍可以處理客戶端請求。

 

 

主從復制的作用

  • 數據冗余(數據備份)
  • 讀寫分離:從slave讀取數據、master負責數據的寫操作,提高服務器性能
  • 負載均衡:多個從節點都負責讀,可使用nginx進行讀的負載均衡
  • 高可用:master出現問題,可使用一個slave作為master;部分slave出現問題,其它slave可用

 

 

全量復制、偏移量

slave第一次連接master后,會從master復制全部數據,稱為全量復制。

之后每次從master同步,都只復制偏移量(offset,距離上一次同步,期間做的修改)。如果偏移量復制失敗,則嘗試進行全量復制。

當然,如果有需要,slave 在任何時候都可以發起全量同步。

 

 

redis主從同步配置

有2種方式:配置文件方式、命令方式。

 

redis 5.0之后的版本用replicaof代替了slaveof,雖然在5.0中slaveof還能用(向下兼容),但早晚要被取消,盡量用replicaof。

此處以5.0版本為例,若使用的是5.0之前的版本,把所有的replicaof都換成slaveof即可。

 

要模擬的話,在VMware上克隆虛擬機,就有多個Linux了,不必修改使用的端口號。

如果在一個虛擬機上模擬(使用多個redis服務器),將之前的redis復制多份,放到/usr/local/redis下,重命名為redis1、redis2....並修改redis.conf中的端口號、各種文件保存位置。

 

 

如何查看redis的版本?

 cd到redis的bin目錄,以下4句命令任選一句執行:

./redis-cli -v
./redsi-cli --version  #全稱是2根-

./redis-server -v
./redis-server --version

 

 

 


 

 

配置文件方式(推薦)

修改redis.conf中的配置。

 

1、master的配置

replicaof、masterauth的配置要注釋掉。

master宕機后,把某個slave的replicaof配置注釋掉,作為新的master,再把其它slave指向此節點。

 

 

設置slave只讀(讀寫分離)。

 

其實這些都是默認值,看一下只是怕之前改過。

 

看一下有沒有設置密碼。

 

如果做了修改,需重啟redis。

 

 

 

2、slave的設置

設置一下master的ip、port,如果master設置了密碼,此處還需要寫上master的密碼。

重啟下redis生效。

 

 

 

連上master,看下主從復制信息:

info replication

連接的slave的個數,各slave的ip、port、state、偏移量都可以看到。

那個replid即replication id,每次復制完都會用replid打一個標記復制至此,距上一replid之間的內容就是偏移量(增量)。

我們隨便set一個鍵值對,比如set user hasagei

 

 

 

連上slave,同樣的方式看下:

master的信息、本slave的信息都可以看到,包括slave是否只讀、偏移量等等。

有個參數是connected_slaves,是本節點的從節點個數(層疊,從節點也可以作為主節點),如果有,也會列出各從節點的信息。

 

get一下剛才在master中設置的key,能獲取到值;

set一個鍵值對,報錯,即只讀。

 

 


 

 

 

命令方式(了解即可)

(1)連接到要做為主節點的redis服務器

replicaof no one

使之成為主節點

 

config set replica-read-only yes

 設置slave只讀

 

也可以先查看,不符合要求再設置:

config get replica-read-only

 

 

 

(2)連接到要作為slave的redis服務器

replicaof no one

可能之前就是某個master的從屬,先去掉雜七雜八的主人。

 

replicaof 192.168.1.7 6379  #master的ip、port

 

 

缺點:

  • 配置不是永久性的,只在本次連接期間有效,下次還需要配置,麻煩
  • 如果master設置了密碼,則連不上

 

 


 

 

 

也可以手動同步:

sync  #馬上執行主從同步

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM