集羣管理工具redis-trib.rb已經被廢棄,所以不用安裝ruby啥的了,當時redis-trib.rb的功能,現在已經集成到了redis-cli中,並且可以在有認證的情況執行了,可以通過./redis-cli --cluster help查看使用方式。
環境
#創建集羣#
./redis-cli --cluster create 192.168.1.172:6379 192.168.1.172:6380 192.168.1.172:6381
查看所有槽已經均勻分配
#檢查集羣#
./redis-cli --cluster check 192.168.1.172:6379
查看集羣一切正常
#查看集羣key、slot、slave分佈信息#
./redis-cli --cluster info 192.168.1.172:6379
#在線遷移槽#
./redis-cli --cluster reshard 192.168.1.172:6379
選擇一個目標節點的id
源選擇all
#平衡各節點槽數量#
./redis-cli --cluster rebalance --cluster-threshold 1 192.168.1.172:6379
已平衡
#刪除集羣節點#
./redis-cli --cluster del-node 192.168.1.172:6379 b97cde23f3c1a1b13e42728562180355b985831a
這裏必須是沒有槽的節點,所以必須先移除槽,否則報如下錯誤
通過reshard遷移走槽後,刪除成功,並且關閉了該節點
被刪除的node重啓後,依然記得集羣中的其它節點,這是需要執行cluster forget nodeid來忘記其它節點
#添加集羣節點#
./redis-cli --cluster add-node 192.168.1.172:6379 192.168.1.172:6380
再平衡各節點slot數量
#將集羣外部redis實例中的數據導入到集羣中去#
./redis-cli --cluster import 192.168.1.172:6379 --cluster-from 192.168.1.172:6382 --cluster-copy
Cluster-from後面跟外部redis的ip和port
如果只使用cluster-copy,則要導入集羣中的key不能在,否則如下:
如果集羣中已有同樣的key,如果需要替換,可以cluster-copy和cluster-replace聯用,這樣集羣中的key就會被替換爲外部的