1. 程式人生 > >Redis叢集:主從節點新增和刪除

Redis叢集:主從節點新增和刪除

新增主節點

叢集建立成功後可以向叢集中新增節點,下面是新增一個master主節點 

新增7007結點,參考叢集結點規劃章節新增一個“7007”目錄作為新節點。

執行下邊命令:

./redis-trib.rb add-node  192.168.101.3:7007 192.168.101.3:7001

 

檢視叢集結點發現7007已新增到叢集中:

 

hash槽重新分配

新增完主節點需要對主節點進行hash槽分配這樣該主節才可以儲存資料。

redis叢集有16384個槽,叢集中的每個結點分配自已槽,通過檢視叢集結點可以看到槽佔用情況。

給剛新增的7007結點分配槽:

第一步:連線上叢集

./redis-trib.rb reshard 192.168.101.3:7001(連線叢集中任意一個可用節點都行)

第二步:輸入要分配的槽數量

輸入 500表示要分配500個槽

第三步:輸入接收槽的結點id

這裡準備給7007分配槽,通過cluster nodes檢視7007結點id為15b809eadae88955e36bcdbb8144f61bbbaf38fb

輸入:15b809eadae88955e36bcdbb8144f61bbbaf38fb

 

第四步:輸入all/done

這裡輸入all

第五步:輸入yes開始移動槽到目標結點id

 

 

​​​​​​​新增從節點

叢集建立成功後可以向叢集中新增節點,下面是新增一個slave從節點。

新增7008從結點,將7008作為7007的從結點。

./redis-trib.rb add-node --slave --master-id 主節點id 新增節點的ip和埠 叢集中已存在節點ip和埠

執行如下命令:

./redis-trib.rb add-node --slave --master-id cad9f7413ec6842c971dbcc2c48b4ca959eb5db4  192.168.101.3:7008 192.168.101.3:7001

cad9f7413ec6842c971dbcc2c48b4ca959eb5db4  是7007結點的id,可通過cluster nodes檢視。

注意:如果原來該節點在叢集中的配置資訊已經生成cluster-config-file指定的配置檔案中(如果cluster-config-file沒有指定則預設為nodes.conf),這時可能會報錯:

[ERR] Node XXXXXX is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0

解決方法是

刪除生成的配置檔案nodes.conf,刪除後再執行./redis-trib.rb add-node指令

檢視叢集中的結點,剛新增的7008為7007的從節點:

 

 

​​​​​​​刪除結點:

./redis-trib.rb del-node 127.0.0.1:7005 4b45eb75c8b428fbd77ab979b85080146a9bc017

刪除已經佔有hash槽的結點會失敗,報錯如下:

[ERR] Node 127.0.0.1:7005 is not empty! Reshard data away and try again.

需要將該結點佔用的hash槽分配出去(參考hash槽重新分配章節)。