Redis叢集常見操作
阿新 • • 發佈:2018-12-25
常見設定
設定最大記憶體
maxmemory 2548000000
如果不需要持久化時,去掉持久化功能
註釋掉save行
啟動時作用守護程序
daemonize yes
叢集配置
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
叢集設定
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
redis-trib.rb create --replicas 1 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000 10.1.xx.xx:7000
常見命令
檢視叢集狀態
redis/src/redis-cli -p 7000 cluster nodes
叢集資訊
cluster info
檢視叢集key的分佈
./redis-trib.rb info ip:port
響應
10.1.xx.xx:7005 (6960df47...) -> 196 keys | 5461 slots | 1 slaves.
10.1.xx.xx:7003 (d0c98f2e...) -> 204 keys | 5462 slots | 1 slaves.
10.1.xx.xx:7002 (a20e2c37...) -> 216 keys | 5461 slots | 1 slaves.
其它命令
//叢集(cluster)
CLUSTER INFO 列印叢集的資訊
CLUSTER NODES 列出叢集當前已知的所有節點(node),以及這些節點的相關資訊。
//節點(node)
CLUSTER MEET 將 ip 和 port 所指定的節點新增到叢集當中,讓它成為叢集的一份子。
CLUSTER FORGET 從叢集中移除 node_id 指定的節點。
CLUSTER REPLICATE 將當前節點設定為 node_id 指定的節點的從節點。
CLUSTER SAVECONFIG 將節點的配置檔案儲存到硬盤裡面。
//槽(slot)
CLUSTER ADDSLOTS [slot ... ] 將一個或多個槽(slot)指派(assign)給當前節點。
CLUSTER DELSLOTS [slot ...] 移除一個或多個槽對當前節點的指派。
CLUSTER FLUSHSLOTS 移除指派給當前節點的所有槽,讓當前節點變成一個沒有指派任何槽的節點。
CLUSTER SETSLOT NODE 將槽 slot 指派給 node_id 指定的節點,如果槽已經指派給另一個節點,那麼先讓另一個節點刪除該槽>,然後再進行指派。
CLUSTER SETSLOT MIGRATING 將本節點的槽 slot 遷移到 node_id 指定的節點中。
CLUSTER SETSLOT IMPORTING 從 node_id 指定的節點中匯入槽 slot 到本節點。
CLUSTER SETSLOT STABLE 取消對槽 slot 的匯入(import)或者遷移(migrate)。
//鍵 (key)
CLUSTER KEYSLOT 計算鍵 key 應該被放置在哪個槽上。
CLUSTER COUNTKEYSINSLOT 返回槽 slot 目前包含的鍵值對數量。
CLUSTER GETKEYSINSLOT 返回 count 個 slot 槽中的鍵。
手動故障轉義
Redis 叢集支援使用 CLUSTER FAILOVER 命令來手動故障轉移,必須在故障轉移的主服務的其中一個從伺服器上執行,執行完成後,則主節點變成從節點。
原理: 連線到正在故障轉移的主伺服器的客戶端停止了,同時主伺服器傳送複製偏移量給從伺服器,等待到達這個偏移量。當複製偏移量到達之後,故障轉義就開始了,舊的主伺服器被通知切換配置,當客戶端在舊主伺服器上接觸阻塞時,就被重定向到新的主伺服器。
恢復master
啟動故障節點
在故障節點上執行
cluster replicate 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e
其中3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 為master的節點id