1. 程式人生 > >三個步驟解決redi叢集建立報錯

三個步驟解決redi叢集建立報錯

前兩天,去券商環境部署redis叢集。叢集部署好後,同事要部署其他服務需要重啟伺服器,重啟後集群掛了。報一下錯誤:

[ERR] Node 10.25.98.14:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

經過網上查詢大概是需要刪除以下幾個檔案:

appendonly.aof,dump.rdb,nodes.conf

以上檔案是叢集啟動時生成的檔案,若叢集由於重啟服務等異常操作掛掉時,需要清理掉這些檔案方可建立叢集。
當需要叢集的reidis啟動完畢後,執行下述步驟。若沒啟動,先啟動:

/usr/local/redis/bin/redis-server /usr/local/redis/cluster/6379/redis-6379.conf

注:以下步驟會刪除redis中的已存在的資料,若需保留資料,慎用

第一步

清理檔案(appendonly.aof,dump.rdb,nodes.conf)

find / -name appendonly.aof | awk '{print $1}' | xargs -i rm -f {} 
find / -name dump.rdb | awk '{print $1}' | xargs -i rm -f {} 
find / -name nodes.
conf | awk '{print $1}' | xargs -i rm -f {}

上述命令會依次刪除伺服器上的appendonly.aof,dump.rdb,nodes.conf檔案。
注:由於上述命令會刪除所有名為上述檔案的檔案,故若在伺服器上存在非叢集模式的redis 需核對後刪除。

第二步

連線redis,清除資料庫

/usr/local/redis/bin/redis-cli -h 192.168.31.xxx -p 6379

登入redis成功後,執行flushdb命令,返回ok,即操作成功。對各個埠的redis 執行上述操作。

注:上述 -h 192.168.31.xxx 需用伺服器地址,即使在本機上輸入名,也不應使用localhost代替。

第三步

建立叢集:

redis-trib create --replicas 1 192.168.31.xxx:6379 192.168.31.xxx:6379 192.168.31.xxx:6379 192.168.31.xxx:6380 192.168.31.xxx:6380 192.168.31.xxx:6380

建立叢集成功。

由於在多臺伺服器間需要輸入相同的命令,可設定xshell一條命令,多視窗執行。
設定如下:
06051
勾選 Compose Bar,勾選後,xshell下方有如下視窗:
06052
點選箭頭指向的按鈕,會有一個選擇框。使用多端操作,需選擇To All Sessions 或者 To All Xshell,然後在其右側輸入命令即可。

注:右側命令無法使用Tab鍵自動補全功能。