Redis cluster日常管理【一】
一、管理操作
集群
cluster info:打印集群的信息 cluster nodes:列出集群當(dāng)前已知的所有節(jié)點(diǎn),以及節(jié)點(diǎn)的相關(guān)信息 cluster meet<ip><port>:將ip和port所指定的節(jié)點(diǎn)加入到集群當(dāng)中 cluster foget<node_id>:從集群中一處node_id所指向的節(jié)點(diǎn) cluster repolicate<master_node_id>:將當(dāng)前從節(jié)點(diǎn)設(shè)置為node_id指向的master節(jié)點(diǎn)的slave節(jié)點(diǎn)。只能針對(duì)slave節(jié)點(diǎn)操作 cluster saveconfig:將節(jié)點(diǎn)的配置文件保存到硬盤中槽(slot)
cluster addslots <slot>[slot...]:將一個(gè)或者多個(gè)槽(slot)指定派(assign)給當(dāng)前節(jié)點(diǎn) cluster delslots <slot>[slot...]:移除一個(gè)或多個(gè)對(duì)當(dāng)前節(jié)點(diǎn)的指派 cluster flushslots:移除指派給當(dāng)前節(jié)點(diǎn)的所有槽,讓當(dāng)前節(jié)點(diǎn)變成一個(gè)沒有指派任何槽的節(jié)點(diǎn) cluster setslot <slot>node<node_id>:將槽slot指派給node_id指定的節(jié)點(diǎn),如果槽已經(jīng)指派給另外一個(gè)節(jié)點(diǎn),那么先讓另外一個(gè)節(jié)點(diǎn)刪除該槽,然后在指派 cluster setslot <slot>mingranting<node_id>:將本節(jié)點(diǎn)的槽slot遷移到node_id指定的節(jié)點(diǎn)中 cluster setslot <slot>impoting <node_id>:從node_id指定的節(jié)點(diǎn)中導(dǎo)入槽到本節(jié)點(diǎn) cluster setslot<slot>stable:取消對(duì)槽slot的導(dǎo)入(import)或者遷移(migrate) cluster keyslot <key>:計(jì)算鍵key應(yīng)該被放置在哪個(gè)槽上 cluster countkeysinslot<slot>:返回槽slot目前包含的鍵值對(duì)數(shù)量 cluster getkeysinslot <slot><count>:返回count個(gè)slot槽中的鍵二、清理Redis緩存數(shù)據(jù)
清理緩存數(shù)據(jù)有兩種的方式;
- 清除全部的key
- 清除多個(gè)key
三、升級(jí)服務(wù)器
升級(jí)從服務(wù)器很簡單,只需要停止節(jié)點(diǎn)然后用已更新的Redis版本重啟。
升級(jí)主服務(wù)器要稍微復(fù)雜一些,建議的步驟是;
①使用cluster failover來觸發(fā)一次手工故障轉(zhuǎn)移主服務(wù)器
②等待主服務(wù)器變?yōu)閺姆?wù)器
③像升級(jí)從服務(wù)器那樣升級(jí)這個(gè)節(jié)點(diǎn)
④如果想讓剛剛升級(jí)的節(jié)點(diǎn)變成主服務(wù)器,觸發(fā)一次新的手工故障轉(zhuǎn)移,讓升級(jí)的節(jié)點(diǎn)重新變成主服務(wù)器
【可以按照這些步驟一個(gè)節(jié)點(diǎn)一個(gè)節(jié)點(diǎn)的升級(jí),直到全部節(jié)點(diǎn)升級(jí)完畢】
四、復(fù)制遷移
為什么要做復(fù)制遷移呢?我們知道集群的抗崩潰能力總是跟集群中的master擁有的平均slave數(shù)量上成正比。比如如果一個(gè)集群中每個(gè)master只有一個(gè)slave,當(dāng)master和slave都掛掉的時(shí)候這個(gè)集群就崩潰了,當(dāng)然可以通過給每個(gè)master都在多加一個(gè)slave節(jié)點(diǎn)來改進(jìn)系統(tǒng)的可靠性,但是這樣很昂貴。復(fù)制遷移允許只給某些master增加slave,比如集群中有20各節(jié)點(diǎn),10個(gè)master每個(gè)master有一個(gè)slave。然后增加3個(gè)slave到集群中并把它們分配給某幾個(gè)master節(jié)點(diǎn),這樣某些master就會(huì)擁有多于一個(gè)slave。
當(dāng)某個(gè)master失去slave的時(shí)候,復(fù)制遷移可以將slave節(jié)點(diǎn)從擁有富余slave的master旗下遷移給沒有slave的master,這樣我們假設(shè)在早上4點(diǎn)有一個(gè)slave節(jié)點(diǎn)斷掉的時(shí)候另一個(gè)slave會(huì)被遷移過來取代它的位置,這樣當(dāng)master在早上5點(diǎn)掛掉的時(shí)候依然有一個(gè)slave可以被選選舉成為master,集群依然可以正常運(yùn)行。
在Redis集群中通過cluster replicate <master_node_id>命令可以將一個(gè)slave節(jié)點(diǎn)重新配置為另外一個(gè)master的slave。
注意:這個(gè)只是針對(duì)slave節(jié)點(diǎn),即登錄到slave節(jié)點(diǎn)的redis中執(zhí)行這個(gè)命令。
比如現(xiàn)在10.220.5.172:6379是10.220.5.171:6379主節(jié)點(diǎn)的slave節(jié)點(diǎn),也可以把它設(shè)置為10.220.5.173:6379主節(jié)點(diǎn)的slave節(jié)點(diǎn)。
10.220.5.172:6379> info replication # Replication role:slave master_host:10.220.5.171 master_port:637910.220.5.173:6379主節(jié)點(diǎn)的ID是:aed1d5e8127c8ee93af0bbf2b66b800763489690
則操作如下:
這樣可以自動(dòng)的將一個(gè)復(fù)制節(jié)點(diǎn)從一個(gè)master下移動(dòng)到另外一個(gè)master下,這種情況下復(fù)制節(jié)點(diǎn)的自動(dòng)成噢誒之被稱之為復(fù)制遷移,復(fù)制遷移可以提升系統(tǒng)的可靠性和抗災(zāi)性。
關(guān)于復(fù)制遷移需要注意的幾點(diǎn):
總結(jié)
以上是生活随笔為你收集整理的Redis cluster日常管理【一】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis集群架构搭建详解
- 下一篇: Redis cluster日常管理【二】