時間:2024-03-26 14:38作者:下載吧人氣:16
MongoDB集群配置詳解:構建高可用性的數據庫系統
MongoDB是當前最具競爭力的特定NoSQL類型數據庫。 這種數據庫提供了一些大型網站所需的高可用性功能,這些功能在低成本節點上提供卓越的性能。為了實現冪等性、恢復能力以及容錯性,MongoDB在多個節點之間提供復制實例。MongoDB 集群可以構建一個可擴展的高可用性系統,其能夠支持增量擴展,無縫地實現水平擴展,以及提供層次結構的數據分片和本地索引來提高查詢性能。本文將介紹MongoDB集群配置原理并詳細解釋,以構建高可用性的數據庫系統。
MongoDB集群的最基本配置要求包括兩個以上節點,每個節點具有三種用途的實例:主副本、從屬節點和選舉節點。主節點存儲所有更新的數據副本,從屬節點存儲備份的數據,而選舉節點存儲數據的副本,并充當可用性監控工具。主節點負責檢測發送消息,從節點確保備份數據和服務負載均衡。 一旦檢測到主節點故障,投票機制就會啟動,另一個從節點會被選為新的主節點,從而完成故障轉移。
在MongoDB集群配置中,集群中所有節點都是同等重要的,并且充當不同的角色來支持集群的可用性。每個節點可以在集群中主從切換,它們都可以接收請求,允許任何節點在讀和寫查詢中發揮重要作用。 每個MongoDB節點可以部署(混合ShardedRepl Sets)和(Repl Sets),允許節點間的混合模式和復制模式。
除了主從復制,MongoDB 3.2還支持數據分片,也稱為Sharding。 數據分片適用于橫向伸縮,可以顯著改善性能,是處理海量數據的理想方案。它支持分布式讀/寫,并允許數據跨越多個節點來擴展存儲容量,從而提高可伸縮性和可用性。
最后,MongoDB提供了一個用于監控和管理集群的可視化工具,即Ops Manager。 它可用于監控MongoDB實例,從而預防節點故障或過載等錯誤,并記錄節點每一次狀態更改。
為了實現MongoDB集群配置,我們可以使用以下代碼:
// Connect to a MongoDB Server running on ‘localhost’
MongoClient.connect(‘mongodb://localhost:27017’, { useNewUrlParser : true}, (err, client) =>{
// Create a Replica Set
const rSet = client.createReplicaSet(‘myRset’,{
members [{
host: ‘host1:27017’,
priority : 1
}, {
host : ‘host2:27017’,
priority : 0
}, {
host : ‘host3:27017’,
priority : 0
}]
})
// Once the Replica Set is Setup, assign it a unique id
const replicaSetId = rSet.replicaSetId;
// Configure the settings
rSet.configure( {
readPreference : “primary”
}, (err, db) => {
// Insert Documents Into the Database
db.collection(‘users’).insert([{
name : ‘Adam’,
age : 25
}, {
name : ‘Bob’,
age : 20
}], (err, result) => {
console.log(‘Documents Inserted’,result);
})
})
});
網友評論