Redis cluster日常管理【一】
一、管理操作
叢集
cluster info:列印叢集的資訊 cluster nodes:列出叢集當前已知的所有節點,以及節點的相關資訊 cluster meet<ip><port>:將ip和port所指定的節點加入到叢集當中 cluster foget<node_id>:從叢集中一處node_id所指向的節點 cluster repolicate<master_node_id>:將當前從節點設定為node_id指向的master節點的slave節點。只能針對slave節點操作 cluster saveconfig:將節點的配置檔案儲存到硬碟中
槽(slot)
cluster addslots <slot>[slot...]:將一個或者多個槽(slot)指定派(assign)給當前節點 cluster delslots <slot>[slot...]:移除一個或多個對當前節點的指派 cluster flushslots:移除指派給當前節點的所有槽,讓當前節點變成一個沒有指派任何槽的節點 cluster setslot <slot>node<node_id>:將槽slot指派給node_id指定的節點,如果槽已經指派給另外一個節點,那麼先讓另外一個節點刪除該槽,然後在指派 cluster setslot <slot>mingranting<node_id>:將本節點的槽slot遷移到node_id指定的節點中 cluster setslot <slot>impoting <node_id>:從node_id指定的節點中匯入槽到本節點 cluster setslot<slot>stable:取消對槽slot的匯入(import)或者遷移(migrate) cluster keyslot <key>:計算鍵key應該被放置在哪個槽上 cluster countkeysinslot<slot>:返回槽slot目前包含的鍵值對數量 cluster getkeysinslot <slot><count>:返回count個slot槽中的鍵
二、清理Redis快取資料
清理快取資料有兩種的方式;
- 清除全部的key
- 清除多個key
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> keys *
(empty list or set)
三、升級伺服器
- 升級從節點
升級從伺服器很簡單,只需要停止節點然後用已更新的Redis版本重啟。 - 升級主節點
升級主伺服器要稍微複雜一些,建議的步驟是;
①使用cluster failover來觸發一次手工故障轉移主伺服器
②等待主伺服器變為從伺服器
③像升級從伺服器那樣升級這個節點
④如果想讓剛剛升級的節點變成主伺服器,觸發一次新的手工故障轉移,讓升級的節點重新變成主伺服器
【可以按照這些步驟一個節點一個節點的升級,直到全部節點升級完畢】
四、複製遷移
為什麼要做複製遷移呢?我們知道叢集的抗崩潰能力總是跟叢集中的master擁有的平均slave數量上成正比。比如如果一個叢集中每個master只有一個slave,當master和slave都掛掉的時候這個叢集就崩潰了,當然可以通過給每個master都在多加一個slave節點來改進系統的可靠性,但是這樣很昂貴。複製遷移允許只給某些master增加slave,比如叢集中有20各節點,10個master每個master有一個slave。然後增加3個slave到叢集中並把它們分配給某幾個master節點,這樣某些master就會擁有多於一個slave。
當某個master失去slave的時候,複製遷移可以將slave節點從擁有富餘slave的master旗下遷移給沒有slave的master,這樣我們假設在早上4點有一個slave節點斷掉的時候另一個slave會被遷移過來取代它的位置,這樣當master在早上5點掛掉的時候依然有一個slave可以被選選舉成為master,叢集依然可以正常執行。
在Redis叢集中通過cluster replicate <master_node_id>命令可以將一個slave節點重新配置為另外一個master的slave。
注意:這個只是針對slave節點,即登入到slave節點的redis中執行這個命令。
比如現在10.220.5.172:6379是10.220.5.171:6379主節點的slave節點,也可以把它設定為10.220.5.173:6379主節點的slave節點。
10.220.5.172:6379> info replication
# Replication
role:slave
master_host:10.220.5.171
master_port:6379
10.220.5.173:6379主節點的ID是:aed1d5e8127c8ee93af0bbf2b66b800763489690
則操作如下:
登入10.220.5.172節點
10.220.5.172:6379> cluster repolicate aed1d5e8127c8ee93af0bbf2b66b800763489690
這樣可以自動的將一個複製節點從一個master下移動到另外一個master下,這種情況下複製節點的自動成噢誒之被稱之為複製遷移,複製遷移可以提升系統的可靠性和抗災性。
關於複製遷移需要注意的幾點:
- 叢集在遷移的時候會嘗試去遷移擁有再多slave數量的master旗下的slave
- 想利用複製遷移特性來增加系統的可用性,只需要新增一些slave非單個master(哪個master節點並不重要)
- 複製遷移是由配置項 cluster-migration-barrier控制的