位置:首页 > 数据库 > MongoDB在线教程 > MongoDB 复制

MongoDB 复制

复制是跨多个服务器同步数据的过程中。复制提供了冗余和增加数据可用性与不同的数据库服务器上的数据的多个副本,复制保护数据库从一台服务器上的损失。复制也可以让恢复硬件故障和服务中断。额外的数据副本,可以奉献一​​到灾难恢复,报告,或备份。

为什么要复制?

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

MongoDB中复制的工作原理

MongoDB 使用副本集达到复制。副本集是一组 mongod 实例,主机相同的数据集。副本中的一个节点,主节点接收所有的写操作。在所有其他情况下,次要节点,适用于从主操作,以使它们具有相同的数据集。副本集只能有一个主节点。

  1. 副本集是一组中的两个或多个节点(一般至少3个节点是必需的)。
  2. 在副本中设置一个节点是主节点和剩余节点都是次要的。
  3. 从主要到次要节点的所有数据复制。
  4. 自动故障转移或维修的时候,选初级建立,并选出新的主节点。
  5. 失败的节点恢复后,再加入副本集和作品作为辅助节点。

MongoDB 复制是一个典型的图显示在客户端应用程序总是与主节点和主节点,然后将数据复制到二级节点。

MongoDB Replication

副本集特点

  • N个节点的群集
  • 任何节点可以是主要的
  • 所有的写操作为主要的
  • 自动故障转移
  • 自动恢复
  • 主要的共识选择

设置一个副本集

在本在线教程中,我们将mongod实例转换成独立的副本集。要转换到副本设置遵循以下步骤:

  • 关闭停止已经运行的MongoDB服务器。

现在启动MongoDB服务器通过指定  --replSet 选项。 --replSet 基本语法如下:

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

例子

mongod --port 27017 --dbpath "D:set upmongodbdata" --replSet rs0

它会启动一个mongod 实例名称rs0 ,端口为27017。启动命令提示符 rs.initiate(),并连接到这个mongod实例。在mongod客户端执行命令rs.initiate()启动一个新的副本集。要检查副本集的配置执行命令rs.conf()。要检查的状态副本sete执行命令:rs.status()。

将成员添加到副本集

将成员添加到副本集,在多台机器上启动mongod 实例。现在开始一个mongod 客户和发出命令 rs.add().

语法:

rs.add()命令的基本语法如下:

>rs.add(HOST_NAME:PORT)

实例

假设mongod实例的名字是mongod1.net它运行端口为27017。这种情况下,到副本集执行的命令rs.add() 在mongod 客户端。

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

可以添加mongod实例副本设置,只有当连接到主节点。要检查是否连接至初级或mongo 客户端不执行命令db.isMaster()。