iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
Software Development

Redis還在學系列 第 29

Day29 Redis架構實戰-Redis-cli指令

Redis叢集指令使用Redis-cli

  • Redis 5.0開始將原本redis-trib整合到redis-cli中,可以直接操作使用.

  • 叢集一

    • 6310-->Reids Server (Master)
    • 6311-->Reids Server (Replica)
    • 6312-->Reids Server (Replica)
  • 叢集二

    • 6320-->Reids Server (Master)
    • 6321-->Reids Server (Replica)
    • 6322-->Reids Server (Replica)
  • 叢集三

    • 6330-->Reids Server (Master)
    • 6331-->Reids Server (Replica)
    • 6332-->Reids Server (Replica)

create

建立Redis Server叢集,至少要有3個Master節點,其餘會依照給予的參數來配置Replica節點.

# 配置3個master節點
redis-cli --cluster create 127.0.0.1:6310 127.0.0.1:6320 127.0.0.1:6330 

# 配置3個master節點,其餘6個配置為replica節點
# --cluster-replicas 2 代表每個master節點需要配置2個replica節點
redis-cli --cluster create 127.0.0.1:6310 127.0.0.1:6320 127.0.0.1:6330 127.0.0.1:6311 127.0.0.1:6312 127.0.0.1:6321 127.0.0.1:6322 127.0.0.1:6331 127.0.0.1:6332 --cluster-replicas 2 

https://ithelp.ithome.com.tw/upload/images/20211014/201116588AAlhs9iVK.png

check

檢查Redis Server叢集配置是否OK.Slots是否有重覆分配給多個master節點.

redis-cli --cluster check 127.0.0.1:6310

# --cluster-search-multiple-owners 確認是否有同Slot被分配給多個master節點
redis-cli --cluster check 127.0.0.1:6310 --cluster-search-multiple-owners

https://ithelp.ithome.com.tw/upload/images/20211014/20111658QjLiUz09WQ.png
https://ithelp.ithome.com.tw/upload/images/20211014/20111658lI0NyCn875.png

info

查看Redis Server叢集狀態Keys/Slots/Replica.

redis-cli --cluster info 127.0.0.1:6310

https://ithelp.ithome.com.tw/upload/images/20211014/201116580PHA28UNan.png

fix

修復Redis Server叢集.修復Slots重覆分配給多個master節點問題.

redis-cli --cluster fix 127.0.0.1:6310

# --cluster-search-multiple-owners 修復Slots重覆分配給多個master節點問題
# --cluster-fix-with-unreachable-masters 修復尚未被分配的
redis-cli --cluster fix 127.0.0.1:6310  --cluster-search-multiple-owners

https://ithelp.ithome.com.tw/upload/images/20211014/20111658zNwIHjwNx9.png
https://ithelp.ithome.com.tw/upload/images/20211014/20111658R7v57kBpXp.png

reshard

Redis Server叢集指定節點重新分配Slots,通常應用在擴充叢集後的重新分配的情境.

redis-cli --cluster reshard 127.0.0.1:6310

# --cluster-from 指定Redis Server叢集節點node id當作來源重新分配Slots,可以用逗號指定多個節點,預設是所有
# --cluster-to 指定Redis Server叢集節點node id來接收重新分配的Slots,只能指定一個,當沒有輸入時會提示輸入
# --cluster-slots 需要重新分配的Slots數量,當沒有輸入時會提示輸入
# --cluster-yes 直接確認是否要重新分配Slot
# --cluster-timeout 設定cluster migrate執行的逾時時間
# --cluster-pipeline 設定cluster getkeysinslot時一次取出的key數量,預設為10
# --cluster-replace 是否直接replace到目的節點
redis-cli --cluster reshard 127.0.0.1:6310 --cluster-from 1b9af54b8e0f609e0a066530b3f12a7852589fc3 --cluster-to 1307d911eb56f3079e2490dcab53b3131a0f8f81 --cluster-slots 10 --cluster-yes --cluster-timeout 5000 --cluster-pipeline 10 --cluster-replace

rebalance

將指定的Redis Server叢集重新平均分配Slots.

# --cluster-weight 設定集群各node的權重,待後續分配slot時參照 
# --cluster-use-empty-masters 設定是否讓目前尚未分配到的節點參與,預設是不可以
# --cluster-timeout 設定cluster migrate執行的逾時時間
# --cluster-simulate 是否透過模擬進行rebalance
# --cluster-pipeline 設定cluster getkeysinslot時一次取出的key數量,預設為10
# --cluster-threshold 設定閥值來觸發執行rebalance
# --cluster-replace 是否直接replace到目的節點

redis-cli --cluster rebalance --cluster-weight 1b9af54b8e0f609e0a066530b3f12a7852589fc3=1 7a0716a69a2e1af35eb353fadae030f6fc116864=2 1307d911eb56f3079e2490dcab53b3131a0f8f81=3 --cluster-simulate 127.0.0.1:6310

add-node

在Redis Server叢集加入新節點,預設此新增節點角色為Master節點.

# --cluster-slave 將新節點加入Master節點成為Replica
# --cluster-master-id Master節點node id
# add-node 新加入節點 任意已存在節點
redis-cli --cluster add-node 127.0.0.1:6379 127.0.0.1:6310 --cluster-slave --cluster-master-id 1b9af54b8e0f609e0a066530b3f12a7852589fc3

del-node

刪除Redis Server叢集內指定的節點.
如果刪除Master節點中還有配置Slots,需要先將Slots改分派到其他Master節點後才可以刪除.

# 指定刪除的node id
redis-cli --cluster del-node 127.0.0.1:6312 82013de2c546919a43c9b6597a2b6035bb1ac930

call

在Redis Server叢集中執行指定的命令.

# 預設同時對所有節點執行命令
# --cluster-only-masters 僅針對Master節點執行命令
# --cluster-only-replicas 僅針對Replica節點執行命令
redis-cli --cluster call 127.0.0.1:6310 config get cluster-node-timeout

set-timeout

設定cluster-node-timeout.(毫秒)

redis-cli --cluster set-timeout 10000

import

將外部Redis Server的資料匯入到Redis Server叢集中.

# --cluster-from 指定來源Redis Server
# --cluster-copy 使用copy的方式
# --cluster-replace 使用replace的方式

redis-cli --cluster import 127.0.0.1:6310 --cluster-from 127.0.0.1:6379 --cluster-replace

backup

備份Redis Server叢集到路徑.

redis-cli --cluster backup 127.0.0.1:6310 /home/redis/data/

上一篇
Day28 Redis架構實戰-Redis叢集指令
下一篇
Day30 Redis架構實戰-Redis Request Routing/效能監控與調教
系列文
Redis還在學30

尚未有邦友留言

立即登入留言