什么是MongoDB复制?
复制是指确保同一数据在多个Mongo DB Server上可用的过程。实现数据高可用性,这样做很有必要。
如果我们的主MongoDB服务器由于任何原因而关闭,将无法访问数据。但是,如果我们有规律地将数据复制到另一台服务器,即使主服务器出现故障,也可以从另一台服务器访问数据。
复制的另一个目的是实现负载均衡。如果有许多用户连接到系统,而不是让所有用户都连接到一个系统,可以将用户连接到多台服务器,以使负载平均分配。
在MongoDB中,多个MongDB服务器被分组在称为副本集的集合中。副本集将具有一个主服务器,该服务器将接受来自客户端的所有写操作。此后添加到集合中的所有其他实例将称为辅助实例,这些实例可主要用于所有读取操作。
本章我们需要学习这些内容:
副本集:使用rs.initiate()添加第一个成员
如上面所讲,要启用复制,我们首先需要创建MongoDB实例的副本集。
假设在我们的示例中,我们有3个服务器,分别称为ServerA,ServerB和ServerC。在此配置中,ServerA将成为我们的主服务器,ServerB和ServerC将成为我们的从服务器。 下图是一个很好的展示。
以下是创建副本集以及将第一个成员添加到副本集所需遵循的步骤。
步骤1)确保将要添加到副本集的所有mongod.exe实例都安装在不同的服务器上。这是为了确保即使一台服务器出现故障,其他服务器也将可用,因此MongoDB的其他实例也将可用。
步骤2)确保所有mongo.exe实例都可以相互连接。从ServerA发出以下2条命令
mongo –host ServerB –port 27017
mongo –host ServerC –port 27017
同样,如果有更多从服务器,可以执行相同的操作。
步骤3)使用replSet选项启动第一个mongod.exe实例。此选项为将成为此副本集一部分的所有服务器提供分组。
mongo –replSet “Replica1”
其中“ Replica1”是副本集的名称。我们可以为副本集定义任何名称。
步骤4)现在,将第一台服务器添加到副本集,下一步是通过发出以下命令rs.initiate()来启动副本集。
步骤5)通过发出命令rs.conf()来验证副本集,以确保副本设置正确
副本集:使用rs.add()添加辅助副本
只需使用rs.add命令就可以将从服务器添加到副本集。此命令输入从服务器的名称,并将服务器添加到复制集中。
步骤1)假设是否有ServerA,ServerB和ServerC(它们必须是副本集的一部分),并且ServerA被定义为副本集中的主服务器。
要将ServerB和ServerC添加到副本集,执行命令
rs.add(“ServerB”)rs.add(“ServerC”)
副本集:使用rs.remove()重新配置或删除服务
要从配置集中删除服务器,我们需要使用“ rs.remove”命令
步骤1)首先关闭您要删除的实例。可以通过mongo shell发出db.shutdownserver命令来做到这一点。
步骤2)连接到主服务器
步骤3)使用rs.remove命令从副本集中删除所需的服务器。因此,假设有一个包含ServerA,ServerB和ServerC的副本集,并且想要从副本集中删除ServerC,请发出以下命令
rs.remove(“ServerC”)
对副本集进行故障排除
以下步骤是在使用副本集时遇到问题时可以进行故障排除的相同方法。
- 确保所有exe实例都可以相互连接。假设有3个服务器,分别称为ServerA,ServerB和ServerC。从服务器A,发出以下2条命令
mongo –host ServerB –port 27017
mongo –host ServerC –port 27017
- 运行status命令。此命令提供副本集的状态。默认情况下,每个成员将相互发送称为“heartbeat”包的消息,它们仅表示服务器处于运行状态。“status”命令获取这些消息的状态,并显示副本集中的任何成员是否存在任何问题。
- 检查Oplog的大小– Oplog是MongoDB中的一个集合,用于存储对MongoDB数据库进行的写操作的历史记录。然后,MongoDB使用此Oplog将写操作复制到副本集中的其他成员。要检查Oplog,请连接到所需的成员实例并运行printReplicationInfo命令。此命令将显示日志的大小,以及在日志文件变满之前可以将事务保留在其日志文件中的时间。
总结:
- 复制是指确保同一数据在多个Mongo DB Server上可用的过程。可以根据要求将许多成员(MongoDB实例)添加到副本集中。
译者:徐扬
源地址:https://www.guru99.com/mongodb-replication.html
评论前必须登录!
注册