redis cluster 故障後,主從位於不同節點的修復。
今天機房有一臺物理機當機了,有一個虛擬機器192.168.1.122,其上有兩個redis 節點也不能用了。
redis沒有備份,丟失的192.168.1.122節點只能重建。
我找運維的人,分配了一個全新的虛擬機器,並且分配的ip的地址仍然是192.168.1.122。
我在上面裝了兩個全新的redis,並且無資料:
/usr/local/redis/bin/redis-server /opt/cachecloud/conf/redis-cluster-6396.conf & /usr/local/redis/bin/redis-server /opt/cachecloud/conf/redis-cluster-6397.conf &
此時,這兩個redis還是獨立的例項,和原來的叢集沒有任何聯絡。
在叢集內任意節點,執行cluster meet命令,將192.168.1.122:6396和 192.168.1.122:6397兩個例項加入到叢集裡面:
192.168.1.123:6387> cluster meet 192.168.1.122 6396 OK 192.168.1.123:6387> cluster meet 192.168.1.122 6397 OK
檢視叢集狀態:
192.168.1.123:6387> cluster nodes 6bf77cfcd046681eef9c3d7f94a66709a4a691e4 :0 slave,fail,noaddr 9eb3af9feb3492514834b573260ed8e56419e3c5 1669974772279 1669974767266 5 disconnected a227a5bef13fe9a33f9e472e6421b66a0a47d60f 192.168.1.122:6396 master - 0 1670075583027 0 connected 9eb3af9feb3492514834b573260ed8e56419e3c5 192.168.1.71:6387 master - 0 1670075580019 5 connected 0-5461 89d9854ee74c8546fad5da04c5a92492c86905d0 192.168.1.123:6387 myself,master - 0 0 2 connected 5462-10923 02a9161dab2bbffbd3066f49d22344356bf9ea33 192.168.1.71:6388 master - 0 1670075579015 4 connected 10924-16383 6b85f48692c226691f3980ad2f52ef103c4ef05e :0 slave,fail,noaddr 89d9854ee74c8546fad5da04c5a92492c86905d0 1669974770273 1669974763256 4 disconnected 5d1891df2da56a5fa9ec5b91905e9b3fe1ceba04 192.168.1.122:6397 master - 0 1670075582025 7 connected 261e6aa4e54d2725445849b525d4ef2be6c85764 192.168.1.123:6388 slave 02a9161dab2bbffbd3066f49d22344356bf9ea33 0 1670075584030 4 connected
看到192.168.1.122:6396和192.168.1.122:6397加進來了,它們的角色都是master。
接下來,我們把 192.168.1.122:6396和192.168.1.122:6397分別作為192.168.1.71:6387和192.168.1.123:6387的從節點。
192.168.1.122:6396> CLUSTER REPLICATE 9eb3af9feb3492514834b573260ed8e56419e3c5 OK 其中 9eb3af9feb3492514834b573260ed8e56419e3c5 為需要的主節點node id 192.168.1.122:6396 為需要全換的主機 以下同理: 192.168.1.122:6397> CLUSTER REPLICATE 89d9854ee74c8546fad5da04c5a92492c86905d0 OK
修改從為指定的主,結果如下:
cluster nodes 02a9161dab2bbffbd3066f49d22344356bf9ea33 192.168.1.71:6388 master - 0 1670077220086 4 connected 10924-16383 5d1891df2da56a5fa9ec5b91905e9b3fe1ceba04 192.168.1.122:6397 myself,slave 89d9854ee74c8546fad5da04c5a92492c86905d0 0 0 7 connected 9eb3af9feb3492514834b573260ed8e56419e3c5 192.168.1.71:6387 master - 0 1670077223093 5 connected 0-5461 261e6aa4e54d2725445849b525d4ef2be6c85764 192.168.1.123:6388 slave 02a9161dab2bbffbd3066f49d22344356bf9ea33 0 1670077224097 4 connected a227a5bef13fe9a33f9e472e6421b66a0a47d60f 192.168.1.122:6396 slave 9eb3af9feb3492514834b573260ed8e56419e3c5 0 1670077219083 5 connected 89d9854ee74c8546fad5da04c5a92492c86905d0 192.168.1.123:6387 master - 0 1670077222092 2 connected 5462-10923
可以看到正常了。
但是上面的拓撲中,還是存在一個隱患,就是如果192.168.1.71當機後,其上的1和3兩個主節點都會丟失,存在極大的隱患。
下面我們停掉192.168.1.71的1例項,讓192.168.1.122的上的1例項提升為主節點:
/usr/local/bin/redis-cli -h 192.168.1.71 -p 6387 -a '123' shutdown
看到進行了主從切換,這樣的拓撲圖是安全的,不會出現一個機器當機,而丟失資料的情況。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-2926609/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- redis cluster 故障後,主從位於相同節點的修復(丟失了部分資料)Redis
- redis cluster 強制kill某一個節點和shutdown某一個節點後修復過程Redis
- redis-cluster主從搭建Redis
- redis cluster 叢集故障恢復操作思路Redis
- 故障分析 | redis cluster 從庫無法自動恢復同步案例一則Redis
- Redis Cluster 獲取主從關係Redis
- redis cluster節點/新增刪除操作Redis
- rac二節點例項redo故障無法啟動修復
- Redis的主從複製,哨兵和Cluster叢集Redis
- 【Redis】Redis Cluster-叢集故障轉移Redis
- mysql GTID主從複製故障後不停機恢復同步流程MySql
- GTID環境中手動修復主從故障一例(Error 1146)Error
- 故障分析 | Redis 主從複製風暴Redis
- MongoDB修復config配置節點MongoDB
- mongodb主從仲裁節點配置MongoDB
- 故障分析 | MySQL 從機故障重啟後主從同步報錯案例分析MySql主從同步
- vertica單節點故障恢復 Startup Failed, ASR RequiredAIUI
- 【redis】使用redis benchmark評估哨兵模式主節點效能Redis模式
- Redis主從複製那點事Redis
- 【Redis】redis-cluster到redis-cluster的快速複製Redis
- 基於etcd的選主功能實現的主備節點管理
- 一文掌握Redis主從複製、哨兵、Cluster三種叢集模式Redis模式
- 基於配置檔案的redis的主從複製Redis
- redis cluster叢集死一個master剩下的master節點還能提供服務嗎RedisAST
- 從節點崩了,還怎麼「主從讀寫分離」?
- Redis for linux原始碼&叢集(cluster)&主從(master-slave)&哨兵(sentinel)安裝配置RedisLinux原始碼AST
- 8. MySQL Galera Cluster全解析 Part 8 Galera Cluster和傳統MySQL的不同點MySql
- VCS中檢查Cluster中節點的狀態
- redis-cluster叢集安裝(基於redis-3.2.10)Redis
- Redis主從配置Redis
- Redis主從搭建Redis
- Redis主從同步Redis主從同步
- MySQL MGR如何修復資料不一致的節點MySql
- AlwaysOn所在Windows Cluster失敗後,如何在殘存Server節點上快速恢復DB的測試(極端情況)WindowsServer
- Redis主從複製斷點續傳的工作原理概述Redis斷點
- windows10更新後藍芽故障怎麼解決_windows10電腦更新後藍芽故障修復方法Windows藍芽
- Golang 基於單節點 Redis 實現的分散式鎖GolangRedis分散式
- 基於Dokcer搭建Redis叢集(主從叢集)Redis