三個步驟解決redi叢集建立報錯
阿新 • • 發佈:2018-11-30
前兩天,去券商環境部署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一條命令,多視窗執行。
設定如下:
勾選 Compose Bar
,勾選後,xshell下方有如下視窗:
點選箭頭指向的按鈕,會有一個選擇框。使用多端操作,需選擇To All Sessions
或者 To All Xshell
,然後在其右側輸入命令即可。
注:右側命令無法使用Tab
鍵自動補全功能。