redis6 redis-cli cluster的使用總結


個人學習筆記,謝絕轉載!!!

原文:https://www.cnblogs.com/wshenjin/p/15466843.html


--cluster help

redis-cli --cluster help
Cluster Manager Commands:
  create         host1:port1 ... hostN:portN   #創建集群
                 --cluster-replicas <arg>      #從節點個數
  check          host:port                     #檢查集群
                 --cluster-search-multiple-owners #檢查是否有槽同時被分配給了多個節點
  info           host:port                     #查看集群狀態
  fix            host:port                     #修復集群
                 --cluster-search-multiple-owners #修復槽的重復分配問題
  reshard        host:port                     #指定集群的任意一節點進行遷移slot,重新分slots
                 --cluster-from <arg>          #需要從哪些源節點上遷移slot,可以逗號隔開從多個源節點完成遷移,參數是nodeid
                                               #還可以直接傳遞--from all,這樣源節點就是集群的所有節點,不傳遞該參數,則會在遷移過程中提示用戶輸入
                 --cluster-to <arg>            #slot需要遷移的目的節點nodeid,目的節點只能填寫一個,不傳遞該參數,則會在遷移過程中提示用戶輸入
                 --cluster-slots <arg>         #需要遷移的slot數量,不傳遞該參數的話,則會在遷移過程中提示用戶輸入。
                 --cluster-yes                 #指定遷移時的確認輸入
                 --cluster-timeout <arg>       #設置migrate命令的超時時間
                 --cluster-pipeline <arg>      #定義cluster getkeysinslot命令一次取出的key數量,不傳的話使用默認值為10
                 --cluster-replace             #是否直接replace到目標節點
  rebalance      host:port                                      #指定集群的任意一節點進行平衡集群節點slot數量 
                 --cluster-weight <node1=w1...nodeN=wN>         #指定集群節點的權重
                 --cluster-use-empty-masters                    #設置可以讓沒有分配slot的主節點參與,默認不允許
                 --cluster-timeout <arg>                        #設置migrate命令的超時時間
                 --cluster-simulate                             #模擬rebalance操作,不會真正執行遷移操作
                 --cluster-pipeline <arg>                       #定義cluster getkeysinslot命令一次取出的key數量,默認值為10
                 --cluster-threshold <arg>                      #遷移的slot閾值超過threshold,執行rebalance操作
                 --cluster-replace                              #是否直接replace到目標節點
  add-node       new_host:new_port existing_host:existing_port  #添加節點,把新節點加入到指定的集群,默認添加主節點
                 --cluster-slave                                #新節點作為從節點,默認隨機一個主節點
                 --cluster-master-id <arg>                      #給新節點指定主節點
  del-node       host:port node_id                              #刪除給定的一個節點,成功后關閉該節點服務
  call           host:port command arg arg .. arg               #在集群的所有節點執行相關命令
  set-timeout    host:port milliseconds                         #設置cluster-node-timeout
  import         host:port                                      #將外部redis數據導入集群
                 --cluster-from <arg>                           #將指定實例的數據導入到集群
                 --cluster-copy                                 #migrate時指定copy
                 --cluster-replace                              #migrate時指定replace
  help           

For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

集群操作

創建一個三主節點不帶從節點的集群:

shell# redis6-cli --user admin --pass *** --cluster create \
       192.168.1.21:6379 192.168.1.22:6379 192.168.1.23:6379  

創建一個三節點帶從節點的集群:

shell# redis6-cli --user admin --pass *** --cluster create --cluster-replicas 1 \
       192.168.1.21:6379 192.168.1.22:6379 192.168.1.23:6379 \
       192.168.1.24:6379 192.168.1.25:6379 192.168.1.26:6379
  • --cluster-replicas N,N表示每個主節點需要N個從節點

添加主節點:

add-node new_host:new_port existing_host:existing_port

shell# redis-cli -h 192.168.1.21 -p 6379 --user admin --pass *** --cluster add-node \
       192.168.1.24:6379 192.168.1.21:6379 

給主節點添加從節點:

add-node new_host:new_port existing_host:existing_port --cluster-slave --cluster-master-id

shell# redis-cli -h 192.168.1.21 -p 6379 --user admin --pass *** --cluster add-node \
       192.168.1.24:6379 192.168.1.21:6379 --cluster-slave --cluster-master-id  \
       035f9cb03ead48c7a35a6247834d397be7442b71 
  • 不指定 --cluster-master-id參數,新從節點任意分配給一個主節點

刪除節點:

可以直接刪除從節點,已經分配slot的主節點無法刪除

shell# redis-cli --user admin --pass *** --cluster del-node 192.168.1.21:6379  \
       2afbf631cb81139c7cce6fc4b06263c697ff31ea

shell# redis-cli --user admin --pass *** --cluster del-node 192.168.1.21:6379  \
       f15857c88d90af3885b8be8edfc7a8905b28334a
>>> Removing node f15857c88d90af3885b8be8edfc7a8905b28334a from cluster 192.168.1.21:6379
[ERR] Node 192.168.1.23:6379 is not empty! Reshard data away and try again.

查看集群信息:

shell# redis-cli --user admin --pass *** --cluster info 192.168.1.21:6379

集群檢查:

shell# redis-cli --user admin --pass *** --cluster check 192.168.1.21:6379
  • --cluster-search-multiple-owners , 檢查是否有槽同時被分配給了多個節點

集群修復:

shell# redis-cli --user admin --pass *** --cluster fix 192.168.1.21:6379
  • --cluster-search-multiple-owners , 修復槽的重復分配問題
  • --cluster-fix-with-unreachable-masters

設置集群超時

shell# redis-cli --user admin --pass *** --cluster set-timeout 192.168.1.21:6379 10000

集群中執行命令:

shell# redis-cli --user admin --pass *** --cluster call 192.168.1.21:6379 config get maxmemory 
  • --cluster-only-masters

  • --cluster-only-replicas

集群備份:

shell# redis-cli --user admin --pass *** --cluster backup 192.168.1.21:6379 /data/backup/
  • 怎么從備份文件中恢復????

slot操作

手動遷移slot:

shell# redis-cli --user admin --pass *** --cluster reshard  192.168.1.21:6379 \
       --cluster-from 035f9cb03ead48c7a35a6247834d397be7442b71 \
       --cluster-to 6120f24e60e4f8a11df8fc7e9a50c2a3711abf5f \
       --cluster-slots 100 --cluster-yes --cluster-pipeline 10 --cluster-replace
  • --cluster-from , 需要從哪些源節點上遷移slot,可以逗號隔開從多個源節點完成遷移,傳遞的是節點的nodeid。可以直接傳遞 --from all,這樣源節點就是集群的所有節點,不傳遞該參數的話,則會在遷移過程中提示用戶輸入。
  • --cluster-to , slot需要遷移的目的節點的node id,目的節點只能填寫一個,不傳遞該參數的話,則會在遷移過程中提示用戶輸入。
  • --cluster-slots , 需要遷移的slot數量,不傳遞該參數的話,則會在遷移過程中提示用戶輸入。
  • --cluster-yes , 指定遷移時的確認輸入
  • --cluster-timeout , 設置migrate命令的超時時間
  • --cluster-pipeline , 定義cluster getkeysinslot命令一次取出的key數量,不傳的話使用默認值為10
  • --cluster-replace , 是否直接replace到目標節點

平衡各個節點的slot數量:

shell# redis-cli --user admin --pass *** --cluster rebalance 192.168.1.21:6379
  • --cluster-weight <node1=w1...nodeN=wN> , 指定集群節點的權重
  • --cluster-use-empty-masters , 設置可以讓沒有分配slot的主節點參與,默認不允許
  • --cluster-timeout , 設置migrate命令的超時時間
  • -cluster-simulate , 模擬rebalance操作,不會真正執行遷移操作
  • --cluster-pipeline , 定義cluster getkeysinslot命令一次取出的key數量,默認值為10
  • --cluster-threshold , 遷移的slot閾值超過threshold,執行rebalance操作
  • --cluster-replace , 是否直接replace到目標節點

從其他實例導數據到集群:

shell# redis-cli --user admin --pass *** --cluster import 192.168.1.21:6379 \
       --cluster-from 127.0.0.1:6004 --cluster-from-user admin --cluster-from-pass *** --cluster-replace
  • --cluster-from ,將指定實例的數據導入到集群
  • --cluster-from-user , 用戶
  • --cluster-from-pass , 密碼
  • --cluster-copy ,migrate時指定copy
  • --cluster-replace ,migrate時指定replace


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM