您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關MongoDB添加仲裁節點報錯replica set IDs do not match怎么辦,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
背景:
由于歷史原因,某個MongoDB副本集只有一主一從雙節點,無法滿足自動故障轉移要求,需要配置一個仲裁節點。
原有節點192.168.10.20:27017,192.168.10.21:27017,現在準備在20上配置一個新節點27018當做仲裁
在當前主節點上執行
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)
顯示配置是成功的,接著用命令查看副本集狀態時,發現仲裁節點不可用,報錯信息replica set IDs do not match。
repset:PRIMARY> rs.status()
網上的各種文檔都是說①查看副本集的名稱是否一致 ②把節點上的數據全都刪掉。
我在確認副本集配置名稱一致后,刪除仲裁節點的數據時發現:1、通過客戶端是無法刪除副本集配置集合;2、刪除底層物理文件會導致Mongod進程啟動失敗。
在仔細回想initiate一次性副本集配置的操作時,發現配置后,只啟動了一個客戶端。我的猜想是會不會是因為我啟動了仲裁節點的客戶端,仲裁節點生成了單獨的副本集ID。
于是我將仲裁節點的配置文件db、log、Mongodb.conf全都刪除,并重新命令啟動仲裁節點MongoD進程后,直接在當前Primary節點按之前的操作添加仲裁節點后,發現仲裁節點已正常。
結論:
目前只是證實了我的猜想,還沒找到官方的說法。
在添加副本集節點的時候,新增的節點在啟動服務后,一定不要連接客戶端,否則新增節點會生成另外的副本集ID,雖然副本集名稱一致,但是IDs不一致會報錯。
關于“MongoDB添加仲裁節點報錯replica set IDs do not match怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。