Redis 的主從複製(Master/Slave)

1. 是什麼

行話:也就是咱們所說的主從複製,主機數據更新後根據配置和策略自動同步到備機的 master/slave 機制,Master以寫爲主,Slave 以讀爲主數據庫

 

2. 能幹嗎

  • 數據冗餘:主從複製實現了數據的熱備份,是持久化以外的一種數據冗餘方式
  • 故障恢復:當主節點出現問題時,能夠由從節點提供服務,實現快速的故障恢復;其實是一種服務的冗餘
  • 負載均衡:在主從複製的基礎上,配合讀寫分離,能夠由主節點提供寫服務,由從節點提供讀服務(即寫Redis數據時應用鏈接主節點,讀Redis數據時應用鏈接從節點),分擔服務器負載;尤爲是在寫少讀多的場景下,經過多個從節點分擔讀負載
  • 高可用基石:因爲主從複製是哨兵和集羣可以實施的基礎,所以說主從複製是Redis高可用的基礎

 

3. Redis主從複製講解

(1). info replication:查看 目標redis 主從狀況

 

(2) . 配從庫不配主庫

從庫配置:slaveof 主庫IP 主庫端口服務器

注:slaveof 進行配置的話,每次斷開後都須要從新鏈接,除非配置進redis.conf文件中負載均衡

一旦從庫 跟隨了 主庫,從庫可讀不可寫,首次是全量同步 (這裏的首次是執行slaveof命令時 ) 以後是增量,若從庫同步以前存在 與主庫相同的 key的 數據,則主庫的 數據覆蓋從庫3d

 

(3). 經常使用策略

①. 一主二從

此一主二從 能夠水平擴展爲一主多從,主機主要負責寫,從機主要負責讀blog

主機down掉在沒有哨兵機制的狀況下,從機只會靜默等待 直至主機恢復運行狀態進程

 

②.薪火相傳

上一個Slave能夠是下一個slave的Master,Slave一樣能夠接收其餘slaves的鏈接和同步請求,那麼該slave做爲了鏈條中下一個的master,能夠有效減輕master的寫壓力。內存

第一個開頭的事master,其餘都是slave,只是中間的slave是下一個的master同步

 

(4). 複製原理

Slave啓動成功鏈接到master後會發送一個sync命令it

Master接到命令啓動後臺的存盤進程,同時收集全部接收到的用於修改數據集命令,
在後臺進程執行完畢以後,master將傳送整個數據文件到slave,以完成一次徹底同步

  • 全量複製:而slave服務在接收到數據庫文件數據後,將其存盤並加載到內存中。
  • 增量複製:Master繼續將新的全部收集到的修改命令依次傳給slave,完成同步

可是隻要是從新鏈接master,一次徹底同步(全量複製)將被自動執行

 

(5). 重要的哨兵模式

可以後臺監控主機是否故障,若是故障了根據投票數自動將從庫轉換爲主庫

以一主二從的策略爲例:

  • 1.自定義的/myredis目錄下新建sentinel.conf文件,名字毫不能錯
  • 2.配置哨兵,填寫內容

    sentinel monitor 被監控數據庫名字(本身起名字) 127.0.0.1 6379 1

    上面最後一個數字1,表示主機掛掉後salve投票看讓誰接替成爲主機,得票數多少後成爲主機

  • 3.啓動哨兵:Redis-sentinel /myredis/sentinel.conf
  • 4.正常主從演示,原有的master掛了

  • 5.投票新選,從新主從繼續開工,info replication查查看

  • 6.原有的down掉主機Master恢復運轉,則輪爲從機Slave

 

缺點:複製延時

因爲全部的寫操做都是先在Master上操做,而後同步更新到Slave上,因此從Master同步到Slave機器有必定的延遲,當系統很繁忙的時候,延遲問題會更加嚴重,Slave機器數量的增長也會使這個問題更加嚴重。

相關文章
相關標籤/搜索