炫意html5
最早CSS3和HTML5移动技术网站之一

MongoDB 复制副本集

复制

复制是跨多个服务器同步数据的过程。复制提供了冗余,并通过不同数据库服务器上的多个数据副本提高了数据可用性。复制可防止数据库丢失单个服务器。复制还允许您从硬件故障和服务中断中恢复。使用其他数据副本,您可以将其专用于灾难恢复,报告或备份。

为什么要复制?

  • 为了确保您的数据安全
  • 高(24 * 7)数据可用性
  • 灾难恢复
  • 无需停机维护(例如备份,索引重建,压缩)
  • 读取缩放(要读取的额外副本)
  • 副本集对应用程序是透明的

复制在MongoDB中的工作方式

MongoDB通过使用副本集来实现复制。副本集是一组托管相同数据集的mongod实例。在副本中,一个节点是接收所有写操作的主(master)节点。所有其他实例(例如辅助实例)都将应用主实例中的操作,以便它们具有相同的数据集。副本集只能有一个主节点。
  • 副本集是一组两个或更多节点(通常最少需要3个节点)。
  • 在副本集中,一个节点是主节点,其余节点是次节点。
  • 所有数据从主节点复制到次节点。
  • 在自动故障转移或维护时,将为主节点建立选举,并选举一个新的主节点。
  • 恢复失败的节点后,它再次加入副本集并用作辅助节点。
显示了MongoDB复制的典型示意图,其中客户端应用程序始终与主节点交互,然后主节点将数据复制到辅助节点。
replication
副本集功能
  • N个节点的集群
  • 任何一个节点都可以是主节点
  • 所有写操作都转到主节点操作
  • 自动故障转移
  • 自动恢复
  • 初选共识选举

设置副本集

在本教程中,我们将把独立的MongoDB实例转换为副本集。要转换为副本集,请按照以下步骤操作:
  • 关闭已在运行的MongoDB服务器。
  • 通过指定–replSet选项启动MongoDB服务器。以下是–replSet的基本语法

mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"

示例

mongod --port 27017 --dbpath /data/mongodb --replSet rs0

  • 它将在端口27017上启动名为rs0的mongod实例。
  • 现在启动命令提示符并连接到此mongod实例。
  • 在Mongo客户端中,发出命令rs.initiate()以启动新的副本集。
  • 要检查副本集配置,请发出命令rs.conf()。要检查副本集的状态,请发出命令rs.status()

将成员添加到副本集

要将成员添加到副本集,请在多台计算机上启动mongod实例。现在启动一个mongo客户端并发出命令rs.add()
rs.add()命令的基本语法如下:

>rs.add(HOST_NAME:PORT)

假设您的mongod实例名称为mongod1.net,并且在端口27017上运行。要将此实例添加到副本集,请在Mongo客户端中发出命令rs.add()。

>rs.add("mongod1.net:27017")
>

仅当连接到主​​节点时,才能将mongod实例添加到副本集。要检查您是否连接到主服务器,请在mongo客户端中发出命令db.isMaster()

炫意HTML5 » MongoDB 复制副本集

Java基础教程Android基础教程