MongoDB 是目前最流行的 NoSQL 数据库之一。而 MongoDB 副本集是一种常见的部署方式,在数据高可用性和容灾方面起到至关重要的作用。本文将介绍副本集的搭建及故障恢复处理,并提供相应的示例代码,以帮助读者深入理解。
副本集介绍
MongoDB 副本集是多个 MongoDB 实例形成的集群,其中只有一个实例是主节点(primary),其余实例则是次节点(secondary)。主节点是唯一有写权限的节点,所有写操作都由主节点处理,而除了写操作以外的读操作则可由主节点和次节点共同完成。
副本集可以在多个物理服务器之间进行分布式部署,并能够够在各个节点之间实现数据同步和复制。当主节点宕机时,副本集能够自动进行切换,保证集群的可用性。
以下示例代码展示了如何使用 Node.js 连接 MongoDB 副本集:
// javascriptcn.com code example const MongoClient = require('mongodb').MongoClient; const url = 'mongodb://localhost:27017,localhost:27018,localhost:27019/myproject?replicaSet=myReplicaSet'; const dbName = 'myproject'; MongoClient.connect(url, function(err, client) { const db = client.db(dbName); console.log("Connected successfully to server"); client.close(); });
副本集搭建
副本集的搭建分为三个步骤:启动 MongoDB 实例、初始化副本集和添加节点。
启动 MongoDB 实例
在搭建副本集之前,我们需要先启动多个 MongoDB 实例。以下示例代码展示了如何启动三个实例:
mongod --port 27017 --dbpath /data/rs1 --replSet myReplicaSet mongod --port 27018 --dbpath /data/rs2 --replSet myReplicaSet mongod --port 27019 --dbpath /data/rs3 --replSet myReplicaSet
初始化副本集
启动了 MongoDB 实例后,我们需要初始化副本集。以下示例代码展示了如何初始化副本集:
// javascriptcn.com code example config = { "_id" : "myReplicaSet", "members" : [ { "_id" : 0, "host" : "localhost:27017" }, { "_id" : 1, "host" : "localhost:27018" }, { "_id" : 2, "host" : "localhost:27019" } ] }; rs.initiate(config);
添加节点
在副本集中添加节点非常简单。以下示例代码展示了如何添加节点:
rs.add("localhost:27020")
故障恢复处理
当 MongoDB 副本集中的主节点出现故障时,该副本集将会自动进行切换,以维护集群的可用性。以下示例代码展示了如何处理主节点故障:
rs.status();
当主节点宕机后,副本集中的其他节点将会检测到该节点失效,并进行自动切换。副本集的新主节点将由集群中的其他节点选举产生。
结论
本文介绍了 MongoDB 副本集的搭建及故障恢复处理,详细介绍了副本集的三个步骤:启动 MongoDB 实例、初始化副本集和添加节点。本文提供的示例代码能够帮助读者更好地理解和应用 MongoDB 副本集,从而保证数据的高可用性和容灾性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/673422760bc820c58246d01a