您好,登錄后才能下訂單哦!
MongoDB中怎么配置副本集,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
環境準備
三臺服務器,地址分別是:
192.168.248.128 192.168.248.135 192.168.248.136
按照上文介紹的步驟搭建副本集環境,這里不再贅述。
在副本集環境搭建好之后,我們可以利用如下命令刪除一個副本集成員:
rs.remove('192.168.248.128:27017')
上面的命令執行完成后,我們可以通過rs.status()命令來查看是否刪除成功,也可以通過如下命令來為副本集添加一個成員:
rs.add('192.168.248.128:27017')
當然,副本集也是可以更新的,使用reconfig命令即可,如下:
首先定義config,如下:
config={_id:"rs",members:[{_id:3,host:"192.168.248.128"},{_id:1,host:"192.168.248.135"}]}
然后執行更新操作:
rs.reconfig(config)
我們也可以利用config=rs.config()獲取原始的config文件,然后進行修改,修改之后再執行 rs.reconfig(config),如下:
config=rs.config() config.members[0].host="192.168.248.136" rs.reconfig(config)
在上文中給小伙伴們演示了主節點掛掉后的情況,和其他的(如Redis)數據庫主從復制不同,MongoDB中主節點掛掉之后會自動從備份節點中選出一個新的主節點出來,這是一個選舉的過程,投票選舉,但是如果備份節點數為偶數的話,可能會出現兩臺服務器票數相等的情況,為了避免這種問題的出現,我們一般有兩種解決方案:
1.數據節點為奇數個,這樣就會避免上面描述的問題出現。
2.使用選舉仲裁者,這是一種特殊的成員,仲裁者不保存數據,也不為客戶端提供服務,只是在選舉投票出現僵持時出來投個票,一個副本集中最多只能有一個仲裁者。
選舉仲裁者占用的系統資源很小,因此對部署的服務器性能沒多大要求,向副本集中添加仲裁者的方式如下:
rs.addArb('192.168.248.128:27017')
也可以利用我們之前說的reconfig來操作:
config=rs.config() config.members[2]={_id:2,host:'192.168.248.128',arbiterOnly:true} rs.reconfig(config)
添加完成之后,我們可以通過rs.status()命令來查看是否添加成功,如果看到如下內容,表示添加成功:
{ "_id" : 2, "name" : "192.168.248.128:27017", "health" : 1, "state" : 7, "stateStr" : "ARBITER", "uptime" : 2, "lastHeartbeat" : ISODate("2017-11-03T08:56:12.406Z"), "lastHeartbeatRecv" : ISODate("2017-11-03T08:56:08.417Z"), "pingMs" : NumberLong(1), "configVersion" : 8 }
仲裁者的移除和普通節點的移除是一樣的,這里不再贅述。
優先級用來描述一個備份節點成為主節點的優先性問題,優先級的取值范圍為[0-100],默認為1,數字越大優先級越高,越有可能成為主節點,0表示該節點永遠不能成為主節點。
我們可以在添加節點時指定優先級,如下:
rs.add({_id:0,host:'192.168.248.128:27017',priority:2})
也可以為已有的節點設置優先級:
config=rs.config() config.members[0].priority=99 rs.reconfig(config)
關于MongoDB中怎么配置副本集問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。