Redis集群管理(二)
1.進(jìn)入集群客戶端
任意選一個(gè)redis節(jié)點(diǎn),進(jìn)入redis 所在目錄 cd /redis 所在目錄/src/ ./redis-cli -h 本地節(jié)點(diǎn)的ip -p redis的端口號(hào) -a 密碼[root@mysql-db01 ~]# redis-cli -h 10.0.0.51 -p 6379 10.0.0.51:6379>
2.查看集群中各個(gè)節(jié)點(diǎn)狀態(tài)
集群(cluster)??cluster info ? ? ? 打印集群的信息
cluster nodes ? 列出集群當(dāng)前已知的所有節(jié)點(diǎn)(node),以及這些節(jié)點(diǎn)的相關(guān)信息? ?
節(jié)點(diǎn)(node) cluster meet <ip> <port> 將ip和port所指定的節(jié)點(diǎn)添加到集群當(dāng)中,讓它成為集群的一份子 cluster forget <node_id> 從集群中移除node_id指定的節(jié)點(diǎn) cluster replicate <node_id> 將當(dāng)前節(jié)點(diǎn)設(shè)置為node_id指定的節(jié)點(diǎn)的從節(jié)點(diǎn) cluster saveconfig 將節(jié)點(diǎn)的配置文件保存到硬盤(pán)里面 cluster slaves <node_id> 列出該slave節(jié)點(diǎn)的master節(jié)點(diǎn) cluster set-config-epoch 強(qiáng)制設(shè)置configEpoch 槽(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è)沒(méi)有指派任何槽的節(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)刪除該槽,然后再進(jìn)行指派 cluster setslot <slot> migrating <node_id> 將本節(jié)點(diǎn)的槽slot遷移到node_id指定的節(jié)點(diǎn)中 cluster setslot <slot> importing <node_id> 從node_id 指定的節(jié)點(diǎn)中導(dǎo)入槽slot到本節(jié)點(diǎn) cluster setslot <slot> stable 取消對(duì)槽slot的導(dǎo)入(import)或者遷移(migrate) 鍵(key) cluster keyslot <key> 計(jì)算鍵key應(yīng)該被放置在哪個(gè)槽上 cluster countkeysinslot <slot> 返回槽slot目前包含的鍵值對(duì)數(shù)量 cluster getkeysinslot <slot> <count> 返回count個(gè)slot槽中的鍵 其它 cluster myid 返回節(jié)點(diǎn)的ID cluster slots 返回節(jié)點(diǎn)負(fù)責(zé)的slot cluster reset 重置集群,慎用 進(jìn)入到redis客戶端后,運(yùn)行如下命令,查看集群中節(jié)點(diǎn)狀態(tài) 10.0.0.51:6379> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:6 cluster_my_epoch:1 cluster_stats_messages_sent:23695 cluster_stats_messages_received:23690 10.0.0.51:6379> cluster nodes e2cfd53b8083539d1a4546777d0a81b036ddd82a 10.0.0.70:6384 slave f1f6e93e625e8e0cef0da1b3dfe0a1ea8191a1ad(主節(jié)點(diǎn)為:10.0.0.51:6380) 0 1510021756842 6 connected 857a5132c844d695c002f94297f294f8e173e393 10.0.0.51:6379 myself,master - 0 0 1 connected 0-5460 e4394d43cf18aa00c0f6833f6f498ba286b55ca1 10.0.0.70:6382 master - 0 1510021759865 4 connected 5461-10922 16eca138ce2767fd8f9d0c8892a38de0a042a355 10.0.0.70:6383 slave 857a5132c844d695c002f94297f294f8e173e393 0 1510021757849 5 connected f1f6e93e625e8e0cef0da1b3dfe0a1ea8191a1ad 10.0.0.51:6380 master - 0 1510021754824 2 connected 10923-16383 ##紅色字體可以看出只有主節(jié)點(diǎn)會(huì)被分配哈希槽 d14e2f0538dc6925f04d1197b57f44ccdb7c683a 10.0.0.51:6381 slave e4394d43cf18aa00c0f6833f6f498ba286b55ca1 0 1510021758855 4 connected 10.0.0.51:6379> 可以查看到主從關(guān)系,以及節(jié)點(diǎn)的健康程度
3.寫(xiě)入記錄
set key value? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?##只有擁有哈希槽的節(jié)點(diǎn)才能被寫(xiě)入數(shù)據(jù),這就意味著只有主節(jié)點(diǎn)才能寫(xiě)數(shù)據(jù) [root@mysql-db01 src]# redis-cli -h 10.0.0.51 -p 6380 10.0.0.51:6380> get mao (nil) 10.0.0.51:6380> set mao 123 OK4.主節(jié)點(diǎn)和備節(jié)點(diǎn)切換
在需要的slaves節(jié)點(diǎn)上執(zhí)行命令:CLUSTER?FAILOVER
?
[root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-cli -h 10.0.0.51 -p 6380 ###切換主備需要先進(jìn)入備節(jié)點(diǎn),然后在備節(jié)點(diǎn)中切換到主節(jié)點(diǎn) 10.0.0.51:6380> cluster failover (error) ERR You should send CLUSTER FAILOVER to a slave 10.0.0.51:6380> exit [root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-cli -h 10.0.0.70 -p 6383 10.0.0.70:6383> cluster failover ##切換到主節(jié)點(diǎn) OK 10.0.0.70:6383> cluster nodes 777c9eab94812d13d8b9dc768460dcf1316283f1 10.0.0.70:6384 slave c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 0 1511223574993 6 connected 92dfe8ab12c47980dcc42508672de62bae4921b1 10.0.0.70:6383 myself,master - 0 0 8 connected 500-5460 2f003cfd139ae4f2bbdac40b0055b46bdff96e0a 10.0.0.51:6379 slave 92dfe8ab12c47980dcc42508672de62bae4921b1 0 1511223577007 8 connected c0e1784f0359f986972c1f9a0d9788f3d69e6c99 10.0.0.51:6381 slave 2da5edfcbb1abc2ed799789cb529309c70cb769e 0 1511223578014 7 connected c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 10.0.0.51:6380 master - 0 1511223572983 2 connected 15464-16383 2da5edfcbb1abc2ed799789cb529309c70cb769e 10.0.0.70:6382 master - 0 1511223573988 7 connected 0-499 5461-15463 10.0.0.70:6383>5.讀取記錄
get key 10.0.0.51:6380> get mao "123" 10.0.0.51:6380>6.新加入master 節(jié)點(diǎn)
在將redis實(shí)例添加到集群之前,一定要確保這個(gè)redis實(shí)例沒(méi)有存儲(chǔ)過(guò)數(shù)據(jù),也不能持久化的數(shù)據(jù)文件,否則在添加的時(shí)候會(huì)報(bào)錯(cuò)的!
節(jié)點(diǎn)的維護(hù)需要使用redis-trib.rb 工具,而不是redis-cli客戶端,退出客戶端,使用如下命令
/redis所在目錄/src/redis-trib.rb add-node 新節(jié)點(diǎn)ip:端口號(hào) ?集群中任意節(jié)點(diǎn)ip:端口號(hào)
新加入slave節(jié)點(diǎn)
/redis所在目錄/src/redis-trib.rb add-node --slave --master-id 主節(jié)點(diǎn)的id(用redis-cli,使用cluster node查看)?新節(jié)點(diǎn)ip:端口號(hào) ?集群中任意節(jié)點(diǎn)ip:端口號(hào)
[root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-trib.rb add-node 10.0.0.70:6383 10.0.0.51:6380 >>> Adding node 10.0.0.70:6383 to cluster 10.0.0.51:6380 >>> Performing Cluster Check (using node 10.0.0.51:6380) M: c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 10.0.0.51:6380slots:500-5460,15464-16383 (5881 slots) master2 additional replica(s) S: 2f003cfd139ae4f2bbdac40b0055b46bdff96e0a 10.0.0.51:6379slots: (0 slots) slavereplicates c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c M: 2da5edfcbb1abc2ed799789cb529309c70cb769e 10.0.0.70:6382slots:0-499,5461-15463 (10503 slots) master1 additional replica(s) S: c0e1784f0359f986972c1f9a0d9788f3d69e6c99 10.0.0.51:6381slots: (0 slots) slavereplicates 2da5edfcbb1abc2ed799789cb529309c70cb769e S: 777c9eab94812d13d8b9dc768460dcf1316283f1 10.0.0.70:6384slots: (0 slots) slavereplicates c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. >>> Send CLUSTER MEET to node 10.0.0.70:6383 to make it join the cluster. [OK] New node added correctly. [root@mysql-db01 ~]#[root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-cli -h 10.0.0.70 -p 6383
10.0.0.70:6383> cluster nodes
777c9eab94812d13d8b9dc768460dcf1316283f1 10.0.0.70:6384 slave c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 0 1511226605993 9 connected
c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 10.0.0.51:6380 master - 0 1511226604987 9 connected 500-5460 15464-16383
c0e1784f0359f986972c1f9a0d9788f3d69e6c99 10.0.0.51:6381 slave 2da5edfcbb1abc2ed799789cb529309c70cb769e 0 1511226603979 7 connected
2da5edfcbb1abc2ed799789cb529309c70cb769e 10.0.0.70:6382 master - 0 1511226600944 7 connected 0-499 5461-15463
8c6534cbfbd2b5453ab4c90c7724a75d55011c27 10.0.0.70:6383 myself,master - 0 0 0 connected? ##這里可以看出10.0.0.70:6383已經(jīng)加入了集群中
2f003cfd139ae4f2bbdac40b0055b46bdff96e0a 10.0.0.51:6379 slave c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 0 1511226602958 9 connected
10.0.0.70:6383>
7.為slave節(jié)點(diǎn)重新分配master
登錄從節(jié)點(diǎn)的redis-cli
執(zhí)行如下命令
cluster?replicate?5d8ef5a7fbd72ac586bef04fa6de8a88c0671052
后邊的id為新的master的id
[root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-cli -h 10.0.0.70 -p 6383 10.0.0.70:6383> cluster nodes 777c9eab94812d13d8b9dc768460dcf1316283f1 10.0.0.70:6384 slave c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 0 1511226605993 9 connected c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 10.0.0.51:6380 master - 0 1511226604987 9 connected 500-5460 15464-16383 c0e1784f0359f986972c1f9a0d9788f3d69e6c99 10.0.0.51:6381 slave 2da5edfcbb1abc2ed799789cb529309c70cb769e 0 1511226603979 7 connected 2da5edfcbb1abc2ed799789cb529309c70cb769e 10.0.0.70:6382 master - 0 1511226600944 7 connected 0-499 5461-15463 8c6534cbfbd2b5453ab4c90c7724a75d55011c27 10.0.0.70:6383 myself,master - 0 0 0 connected 2f003cfd139ae4f2bbdac40b0055b46bdff96e0a 10.0.0.51:6379 slave c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 0 1511226602958 9 connected ##上面可以看出來(lái)10.0.0.70:6384和10.0.0.51:6379都是10.0.0.51:6380的從節(jié)點(diǎn),我們接下來(lái)將10.0.0.51變成10.0.0.70:6383的從節(jié)點(diǎn)10.0.0.70:6383> exit [root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-cli -h 10.0.0.51 -p 6379 10.0.0.51:6379> cluster replicate 8c6534cbfbd2b5453ab4c90c7724a75d55011c27 OK
10.0.0.51:6379> cluster nodes
2f003cfd139ae4f2bbdac40b0055b46bdff96e0a 10.0.0.51:6379 myself,slave 8c6534cbfbd2b5453ab4c90c7724a75d55011c27 0 0 1 connected
8c6534cbfbd2b5453ab4c90c7724a75d55011c27 10.0.0.70:6383 master - 0 1510054872161 0 connected
2da5edfcbb1abc2ed799789cb529309c70cb769e 10.0.0.70:6382 master - 0 1510054875185 7 connected 0-499 5461-15463
c0e1784f0359f986972c1f9a0d9788f3d69e6c99 10.0.0.51:6381 slave 2da5edfcbb1abc2ed799789cb529309c70cb769e 0 1510054876192 7 connected
c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 10.0.0.51:6380 master - 0 1510054874177 9 connected 500-5460 15464-16383
777c9eab94812d13d8b9dc768460dcf1316283f1 10.0.0.70:6384 slave c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 0 1510054875688 9 connected
10.0.0.51:6379>
?
8.分配哈希槽
/redis所在目錄/src/redis-trib.rb?reshard 新節(jié)點(diǎn)ip:端口號(hào)
節(jié)點(diǎn)添加到我們的集群中了,但是他沒(méi)有分配哈希槽,沒(méi)有分配哈希槽的話表示就沒(méi)有存儲(chǔ)數(shù)據(jù)的能力,所以我們需要將其他主節(jié)點(diǎn)上的哈希槽分配到這個(gè)節(jié)點(diǎn)上(相當(dāng)于到菜市場(chǎng)賣(mài)菜,但是攤位已經(jīng)被占了,這時(shí)候就需要從其他人的位置分出一個(gè)地方)。
為新的master重新分配slot。
/data/redis-3.2.8/src/redis-trib.rb reshard 10.0.0.70:6383接下來(lái)就會(huì)詢問(wèn)我們需要借用多少個(gè)哈希槽(這個(gè)數(shù)值隨意填,本文我們填1000),完以后,接下來(lái)的接收node id 就是我們剛創(chuàng)建的節(jié)點(diǎn)id(10.0.0.70:6383)。然后讓我們輸入源節(jié)點(diǎn),如果這里我們輸入all的話,他會(huì)隨機(jī)的從所有的節(jié)點(diǎn)中抽取多少個(gè)(如1000)作為新節(jié)點(diǎn)的哈希槽。我們輸入all以后,會(huì)出下下圖所示東西,表示hash槽正在移動(dòng)。
移動(dòng)完以后,我們進(jìn)入客戶端,執(zhí)行cluster nodes 命令,查看集群節(jié)點(diǎn)的狀態(tài),我們會(huì)看到原來(lái)沒(méi)有的哈希槽現(xiàn)在有了,這樣我們一個(gè)新的節(jié)點(diǎn)就添加好了。
reshard是redis cluster另一核心功能,它通過(guò)遷移哈希槽來(lái)達(dá)到負(fù)載勻衡和可擴(kuò)展目的。10.0.0.51:6379> cluster nodes
2f003cfd139ae4f2bbdac40b0055b46bdff96e0a 10.0.0.51:6379 myself,slave 8c6534cbfbd2b5453ab4c90c7724a75d55011c27 0 0 1 connected
8c6534cbfbd2b5453ab4c90c7724a75d55011c27 10.0.0.70:6383 master - 0 1510055392655 10 connected 0-857 5461-5601 ##這里我們就可以看出來(lái)已經(jīng)分配了1000個(gè)哈希槽
2da5edfcbb1abc2ed799789cb529309c70cb769e 10.0.0.70:6382 master - 0 1510055391648 7 connected 5602-15463
c0e1784f0359f986972c1f9a0d9788f3d69e6c99 10.0.0.51:6381 slave 2da5edfcbb1abc2ed799789cb529309c70cb769e 0 1510055393661 7 connected
c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 10.0.0.51:6380 master - 0 1510055394667 9 connected 858-5460 15464-16383
777c9eab94812d13d8b9dc768460dcf1316283f1 10.0.0.70:6384 slave c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 0 1510055395675 9 connected
10.0.0.51:6379>
9.刪除從節(jié)點(diǎn)
刪除節(jié)點(diǎn)也分兩種,一種是主節(jié)點(diǎn),一種是從節(jié)點(diǎn)。在從節(jié)點(diǎn)中,我們沒(méi)有分配哈希槽,所以刪除很簡(jiǎn)單,我們直接執(zhí)行下面語(yǔ)句即可
/redis所在目錄/src/redis-trib.rb?del-node 從節(jié)點(diǎn)ip:從節(jié)點(diǎn)端口號(hào) 從節(jié)點(diǎn)的id號(hào) [root@mysql-db01 src]# /data/redis-3.2.8/src/redis-trib.rb del-node 10.0.0.51:6381 d14e2f0538dc6925f04d1197b57f44ccdb7c683a >>> Removing node d14e2f0538dc6925f04d1197b57f44ccdb7c683a from cluster 10.0.0.51:6381 >>> Sending CLUSTER FORGET messages to the cluster... >>> SHUTDOWN the node. [root@mysql-db01 src]# /data/redis-3.2.8/src/redis-trib.rb del-node 10.0.0.70:6384 e2cfd53b8083539d1a4546777d0a81b036ddd82a >>> Removing node e2cfd53b8083539d1a4546777d0a81b036ddd82a from cluster 10.0.0.70:6384 >>> Sending CLUSTER FORGET messages to the cluster... >>> SHUTDOWN the node. [root@mysql-db01 src]#10.刪除主節(jié)點(diǎn)
而在刪除主節(jié)點(diǎn)的時(shí)候,因?yàn)樵谥鞴?jié)點(diǎn)中存放著數(shù)據(jù),所以我們?cè)趧h除之前,要把這些數(shù)據(jù)遷移走,并且把該節(jié)點(diǎn)上的哈希槽分配到其他主節(jié)點(diǎn)上。
如果主節(jié)點(diǎn)下有slave節(jié)點(diǎn),將slave節(jié)點(diǎn)分配給其他master或刪除 [root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-cli -h 10.0.0.70 -p 6383 10.0.0.70:6383> cluster replicate f1f6e93e625e8e0cef0da1b3dfe0a1ea8191a1ad ###將該節(jié)點(diǎn)的主節(jié)點(diǎn)分配到10.0.0.51:6380 OK 10.0.0.70:6383> cluster nodes 16eca138ce2767fd8f9d0c8892a38de0a042a355 10.0.0.70:6383 myself,slave f1f6e93e625e8e0cef0da1b3dfe0a1ea8191a1ad 0 0 5 connected 857a5132c844d695c002f94297f294f8e173e393 10.0.0.51:6379 master - 0 1511203901122 1 connected 4386-5460 f1f6e93e625e8e0cef0da1b3dfe0a1ea8191a1ad 10.0.0.51:6380 master - 0 1511203906160 7 connected 0-4385 5461-16383 10.0.0.70:6383> exita.遷移主節(jié)點(diǎn)下的slot(槽)
/redis所在目錄/src/redis-trib.rb?reshard 要?jiǎng)h除的主節(jié)點(diǎn)的ip:端口號(hào)要?jiǎng)h除的節(jié)點(diǎn)必須是空的,也就是不能緩存任何數(shù)據(jù),否則會(huì)出現(xiàn)下面刪除不成功。對(duì)于非空節(jié)點(diǎn),在刪除之前需要重新分片,將緩存的數(shù)據(jù)轉(zhuǎn)移到別的節(jié)點(diǎn)。
[root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-trib.rb del-node 10.0.0.51:6379 857a5132c844d695c002f94297f294f8e173e393 >>> Removing node 857a5132c844d695c002f94297f294f8e173e393 from cluster 10.0.0.51:6379 [ERR] Node 10.0.0.51:6379 is not empty! Reshard data away and try again. [root@mysql-db01 ~]# 現(xiàn)在開(kāi)始遷移數(shù)據(jù): [root@mysql-db01 conf]# /data/redis-3.2.8/src/redis-trib.rb reshard 10.0.0.51:6380(需要遷移哈希槽的redis主節(jié)點(diǎn)) >>> Performing Cluster Check (using node 10.0.0.51:6380) M: c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 10.0.0.51:6380slots:10923-16383 (5461 slots) master1 additional replica(s) M: 2f003cfd139ae4f2bbdac40b0055b46bdff96e0a 10.0.0.51:6379slots:0-5460 (5463 slots) master1 additional replica(s) M: 2da5edfcbb1abc2ed799789cb529309c70cb769e 10.0.0.70:6382slots:5461-10922 (5462 slots) master1 additional replica(s) S: 92dfe8ab12c47980dcc42508672de62bae4921b1 10.0.0.70:6383slots: (0 slots) slavereplicates 2f003cfd139ae4f2bbdac40b0055b46bdff96e0a S: c0e1784f0359f986972c1f9a0d9788f3d69e6c99 10.0.0.51:6381slots: (0 slots) slavereplicates 2da5edfcbb1abc2ed799789cb529309c70cb769e S: 777c9eab94812d13d8b9dc768460dcf1316283f1 10.0.0.70:6384slots: (0 slots) slavereplicates c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. How many slots do you want to move (from 1 to 16384)? 5461##輸入待刪除主節(jié)點(diǎn)的slots(比如我們要把10.0.0.51:6380的數(shù)據(jù)遷移,可以上面紅色字體可以看出) What is the receiving node ID?
##輸入接受哈希槽的node ID(10.0.0.51:6379的node id) Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs. Source node #1: ##從哪里移動(dòng)數(shù)據(jù)槽 (這里輸入10.0.0.51:6380的node id)
source node #1: ##輸入done 即可。 ........... Do you want to proceed with the proposed reshard plan (yes/no)?yes[root@mysql-db01 conf]# /data/redis-3.2.8/src/redis-cli -h 10.0.0.51 -p 6380 10.0.0.51:6380> cluster nodes 92dfe8ab12c47980dcc42508672de62bae4921b1 10.0.0.70:6383 slave 2f003cfd139ae4f2bbdac40b0055b46bdff96e0a 0 1510037366081 5 connected 2f003cfd139ae4f2bbdac40b0055b46bdff96e0a 10.0.0.51:6379 myself,master - 0 0 1 connected 500-5460 2da5edfcbb1abc2ed799789cb529309c70cb769e 10.0.0.70:6382 master - 0 1510037366583 7 connected 0-499 5461-11422 c0e1784f0359f986972c1f9a0d9788f3d69e6c99 10.0.0.51:6381 slave 2da5edfcbb1abc2ed799789cb529309c70cb769e 0 1510037364065 7 connected c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 10.0.0.51:6380 master - 0 1510037363056 2 connected ##沒(méi)有了數(shù)據(jù)槽
777c9eab94812d13d8b9dc768460dcf1316283f1 10.0.0.70:6384 slave c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 0 1510037365075 6 connected
當(dāng)我們?cè)趓eshard時(shí),出現(xiàn)下面錯(cuò)誤,下面提供解決方案:
b.刪除主節(jié)點(diǎn)
/redis所在目錄/src/redis-trib.rb?del-node 主節(jié)點(diǎn)ip:主節(jié)點(diǎn)端口號(hào) 主節(jié)點(diǎn)的id號(hào)(待刪除節(jié)點(diǎn)) 通過(guò)上面的數(shù)據(jù)遷移后,我們就可以刪除出節(jié)點(diǎn)了。[root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-cli -h 10.0.0.70 -p 6383
Could not connect to Redis at 10.0.0.70:6383: Connection refused
Could not connect to Redis at 10.0.0.70:6383: Connection refused
not connected> exit
[root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-cli -h 10.0.0.70 -p 6382
10.0.0.70:6382> cluster nodes
2f003cfd139ae4f2bbdac40b0055b46bdff96e0a 10.0.0.51:6379 slave c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 0 1511225889772 9 connected
2da5edfcbb1abc2ed799789cb529309c70cb769e 10.0.0.70:6382 myself,master - 0 0 7 connected 0-499 5461-15463
c0e1784f0359f986972c1f9a0d9788f3d69e6c99 10.0.0.51:6381 slave 2da5edfcbb1abc2ed799789cb529309c70cb769e 0 1511225890780 7 connected
c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 10.0.0.51:6380 master - 0 1511225891285 9 connected 500-5460 15464-16383
777c9eab94812d13d8b9dc768460dcf1316283f1 10.0.0.70:6384 slave c93b6d1edd6bc4c69d48f9f49e75c2c7f0d1a70c 0 1511225891788 9 connected
10.0.0.70:6382>
11.檢查集群所有節(jié)點(diǎn)是否正常
/redis所在目錄/src/redis-trib.rb?check 集群任意節(jié)點(diǎn)ip:節(jié)點(diǎn)端口號(hào) [root@mysql-db01 ~]# /data/redis-3.2.8/src/redis-trib.rb check 10.0.0.70:6382 >>> Performing Cluster Check (using node 10.0.0.70:6382) M: e4394d43cf18aa00c0f6833f6f498ba286b55ca1 10.0.0.70:6382slots:5461-10922 (5462 slots) master1 additional replica(s) M: 857a5132c844d695c002f94297f294f8e173e393 10.0.0.51:6379slots:0-5460 (5461 slots) master1 additional replica(s) S: 16eca138ce2767fd8f9d0c8892a38de0a042a355 10.0.0.70:6383slots: (0 slots) slavereplicates 857a5132c844d695c002f94297f294f8e173e393 S: d14e2f0538dc6925f04d1197b57f44ccdb7c683a 10.0.0.51:6381slots: (0 slots) slavereplicates e4394d43cf18aa00c0f6833f6f498ba286b55ca1 S: e2cfd53b8083539d1a4546777d0a81b036ddd82a 10.0.0.70:6384slots: (0 slots) slavereplicates f1f6e93e625e8e0cef0da1b3dfe0a1ea8191a1ad M: f1f6e93e625e8e0cef0da1b3dfe0a1ea8191a1ad 10.0.0.51:6380slots:10923-16383 (5461 slots) master1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. [root@mysql-db01 ~]#?
?以上都是本人測(cè)試過(guò)后總結(jié),可放心使用,如有不明白,可留言。
轉(zhuǎn)載于:https://www.cnblogs.com/dadonggg/p/8074813.html
總結(jié)
以上是生活随笔為你收集整理的Redis集群管理(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: script 有哪个属性可以让它不立即执
- 下一篇: 选题展示博客