MongoDB添加仲裁節(jié)點報錯:replica set IDs do not match的解決方法
背景:
由于歷史原因,某個MongoDB副本集只有一主一從雙節(jié)點,無法滿足自動故障轉(zhuǎn)移要求,需要配置一個仲裁節(jié)點。
原有節(jié)點192.168.10.20:27017,192.168.10.21:27017,現(xiàn)在準備在20上配置一個新節(jié)點27018當(dāng)做仲裁
在當(dāng)前主節(jié)點上執(zhí)行
repset:PRIMARY> cfg={_id:"repset", members:[{_id:0, host:'192.168.10.20:27017', priority:1},{_id:2, host:'192.168.10.21:27017', priority:2}, {_id:3, host:'192.168.10.20:27018', arbiterOnly:true}]}; repset:PRIMARY> rs.reconfig(cfg)
顯示配置是成功的,接著用命令查看副本集狀態(tài)時,發(fā)現(xiàn)仲裁節(jié)點不可用,報錯信息replica set IDs do not match。
repset:PRIMARY> rs.status()
網(wǎng)上的各種文檔都是說①查看副本集的名稱是否一致 ②把節(jié)點上的數(shù)據(jù)全都刪掉。
我在確認副本集配置名稱一致后,刪除仲裁節(jié)點的數(shù)據(jù)時發(fā)現(xiàn):1、通過客戶端是無法刪除副本集配置集合;2、刪除底層物理文件會導(dǎo)致Mongod進程啟動失敗。
在仔細回想initiate一次性副本集配置的操作時,發(fā)現(xiàn)配置后,只啟動了一個客戶端。我的猜想是會不會是因為我啟動了仲裁節(jié)點的客戶端,仲裁節(jié)點生成了單獨的副本集ID。
于是我將仲裁節(jié)點的配置文件db、log、Mongodb.conf全都刪除,并重新命令啟動仲裁節(jié)點MongoD進程后,直接在當(dāng)前Primary節(jié)點按之前的操作添加仲裁節(jié)點后,發(fā)現(xiàn)仲裁節(jié)點已正常。
結(jié)論:
目前只是證實了我的猜想,還沒找到官方的說法。
在添加副本集節(jié)點的時候,新增的節(jié)點在啟動服務(wù)后,一定不要連接客戶端,否則新增節(jié)點會生成另外的副本集ID,雖然副本集名稱一致,但是IDs不一致會報錯。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
MongoDB數(shù)據(jù)庫安裝部署及警告優(yōu)化
大家好,本篇文章主要講的是MongoDB數(shù)據(jù)庫安裝部署及警告優(yōu)化,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12MongoDB中數(shù)據(jù)的替換方法實現(xiàn)類Replace()函數(shù)功能詳解
這篇文章主要介紹了MongoDB中數(shù)據(jù)的替換方法實現(xiàn)類Replace()函數(shù)功能詳解,需要的朋友可以參考下2020-02-02MongoDB中多表關(guān)聯(lián)查詢($lookup)的深入講解
NoSql的多表關(guān)聯(lián)一直是比較復(fù)雜的問題,下面這篇文章主要給大家介紹了關(guān)于MongoDB中多表關(guān)聯(lián)查詢($lookup)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2018-12-12MongoDB??數(shù)據(jù)模型的設(shè)計模式及優(yōu)缺點
這篇文章主要介紹了MongoDB??數(shù)據(jù)模型的設(shè)計模式,在實際開發(fā)中,大多數(shù)性能問題都可以追溯到糟糕的模型設(shè)計,官方也提供分享過文檔模型設(shè)計的進階技巧,這里簡單翻譯記錄一下,需要的朋友可以參考下2022-12-12Mongodb 利用mongoshell進行數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn)方法
下面小編就為大家分享一篇Mongodb 利用mongoshell進行數(shù)據(jù)類型轉(zhuǎn)換的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12