MongoDB集群配置详解:构建高可用性的数据库系统(mongodb的集群配置)
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);
})
})
});