Redis—主從複製

主從複製的實現方式

實現方式一:在從節點上執行 "slaveof 主節點ip 端口" 命令,如下命令都是在從節點的 redis 上面執行的。html

127.0.0.1:6379> slaveof 192.168.1.45 6379      -- 確保主節點(192.168.1.45)的防火牆規則是放行的,使用命令後自身數據會被清空,但取消slave只是中止複製,並不清空。
127.0.0.1:6379> slaveof no one                 -- 取消複製,從節點的庫不會清空舊數據,只是不從主庫那裏複製數據過來了。

實現方式二:修改配置文件,在從服務器的配置文件中加入:slaveof <masterip> <masterport>。該方案須要重啓redis從節點纔可生效,不建議使用。redis

# slaveof   <masterip> <masterport>
# replicaof <masterip> <masterport>
slaveof 192.168.1.45 6379              # 方式一,鏈接主節點的ip、端口。
replicaof 192.168.1.45 6379            # 方式二,鏈接主節點的ip、端口。
 
masterauth 123456                      # 若是主節點須要密碼認證,則須要加上這行。主節點密碼爲:123456。

slave-read-only yes                    # 設置從節點只讀不能寫,目的是維持主從節點數據一致性。這一行能夠不加。

實現方式三:在 redis-server 服務啓動命令後加入 --slaveof <masterip> <masterport>sql

查看命令:bash

127.0.0.1:6379> info replication               -- 查看主從複製狀態。主節點客戶端和從節點客戶端均可以執行,能夠看到複製的一些信息。
127.0.0.1:6379> keys *                         -- 查看當前redis中的全部key。

注意事項服務器

  • Master主節點服務器不須要針對主從複製作任何的設置(這不包括對主從複製過程的配置優化),Slave從節點服務器上咱們只須要作一件事情,就是打開slaveof選項便可。
  • redis主從複製爲咱們提供了複製功能,實現了相同數據的多個副本。複製功能是redis高可用的基礎,無論是哪一種集羣方案,都是基於底層的主從複製原理進行的。
  • 在redis的主從複製中,和其餘服務同樣,都有master和slave兩個角色,默認每一個redis節點都是主節點,每一個從節點也只能有一個主節點,而主節點能夠配置多個從節點。
  • 若是主節點的 redis 服務鏈接須要密碼,則須要在從節點的配置文件中,修改以下配置:
replicaof 192.168.1.45 6379        # 使用 replicaof 參數對master進行指定,下面是密碼認證。
masterauth 123456                  # 這是主節點 redis 服務的鏈接密碼。通常改這個就行,若是不行,就再添加上面的一行。

主從複製的狀態過程

1、當執行切主指令後,slave發生了什麼?優化

所謂切主操做,無非就是直接從新指向另外一臺redis節點做爲新的master。即:slaveof ip portui

  • 斷開與舊主的複製關係。
  • 與新節點創建主從關係。
  • 刪除slave節點當前的全部數據。
  • 對新節點進行復制操做。

2、當斷開了主從複製關係,slave節點上發生了什麼?.net

  • 斷開與主節點複製關係。
  • slave晉升爲master。
  • slave斷開復制關係後,並不會拋棄原有的數據,只是沒法獲取主節點上的數據變化。

http://www.noobyard.com/article/p-nogvggip-mw.htmlcode

https://www.zbpblog.com/blog-167.htmlserver

https://zhuanlan.zhihu.com/p/112213386

https://www.cnblogs.com/mseddl/p/11470900.html

http://www.noobyard.com/article/p-zfqcushg-k.html

http://www.mamicode.com/info-detail-3070859.html