擴容集群:
◆准備新節點
新節點:
。必須是集群模式
。配置和其他節點統一,節點的配置請參照之前寫的“安裝cluster”篇里面有寫
。啟動后是孤兒節點,就是沒有設置為主從節點
。然后啟動節點:redis-server conf/redis-${port}.conf
◆加入集群
。使用原生方法:
進入客戶端中進行meet
。使用redis-trib.rb加入集群:
redis-trib.rb add-node new_host:new_port existing_host:existing_port --slave--master-id<arg>
redis-trib.rb add-node 127.0.0.1:6385 127.0.0.1:6379
建議使用redis-trib.rb能夠避免新節點已經加入其他集群,造成故障
◆遷移槽和數據
。槽遷移計划:
。遷移數據
*步驟:
1,對目標節點發送:cluster setslot {slot} importing {sourceNodeId}命令,讓目標節點准備導入槽的數據 2,對源節點發送:cluster setslot {slot} migrating {targetNodeId}命令,讓源節點准備遷出槽的數據 3,源節點循環執行cluster getkeysinslot {slot} {count}命令,每次獲取count個屬於槽的鍵 4,在源節點上執行migrate {targetIp} {targetPort} key 0 {timeout} 命令把指定key遷移 5,重復執行步驟3~4直到槽下所有的鍵數據遷移到目標節點 6,向集群內所有主節點發送cluster setslot {slot} node {targetNodeId}命令,通知槽分配給目標節點
*流程圖:
*python操作的偽代碼:
*使用redis-trib.rb來遷移數據:
1,./redis-trib.rb reshard 127.0.0.1:7000 2,執行了上面的命令后會出現提示問你需要遷移多少個槽,這個數量是拿16384/加入新節點的總個數 3,2的步驟執行完之后,它又會問你希望那個ID接受的給那個ID,你就填寫你要加入的節點ID即可 4,執行完3填入 all 回車即可 5,這樣就完成了