1. 程式人生 > >Redis cluster日常管理【一】

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)

三、升級伺服器

  1. 升級從節點
    升級從伺服器很簡單,只需要停止節點然後用已更新的Redis版本重啟。
  2. 升級主節點
    升級主伺服器要稍微複雜一些,建議的步驟是;
    ①使用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下,這種情況下複製節點的自動成噢誒之被稱之為複製遷移,複製遷移可以提升系統的可靠性和抗災性。

關於複製遷移需要注意的幾點:

  1. 叢集在遷移的時候會嘗試去遷移擁有再多slave數量的master旗下的slave
  2. 想利用複製遷移特性來增加系統的可用性,只需要新增一些slave非單個master(哪個master節點並不重要)
  3. 複製遷移是由配置項 cluster-migration-barrier控制的