MongoDB教程
第十一章 MongoDB复制(副本集)
>复制就是跨多个服务器同步数据的过程,复制提供了数据的冗余备份,在多个服务器中存储数据副本,以此来提高数据的可用性,并可以保证数据的安全性。另外,复制还可以防止数据丢失,因为复制允许您从硬件故障或服务中断的过程中恢复数据。 #####复制的好处 - 保障数据的安全性; - 数据高可用性 (24*7); - 数据恢复; - 维护过程无需停机(例如备份、索引重建、压缩); - 分布式读取数据; - 副本集对应用程序是透明的。 ##### 复制原理 >MongoDB 通过使用副本集来实现复制。副本集是一组托管相同数据集的 mongod 实例。在副本中,一个节点是接收所有写操作的主节点,其余的所有实例,例如第二实例,都将应用来自第一个实例的操作,以便它们具有相同的数据集。副本集只能有一个主节点。 - 副本集是一组两个或更多节点(通常最少需要 3 个节点); - 在副本集中,一个节点是主要节点,其余节点是从节点; - 所有数据从主节点复制到从节点; - 在自动故障转移或维护时,将为主节点建立选举,并选举一个新的主节点; - 恢复失败的节点后,它再次加入副本集并用作辅助节点。  #####副本集特征 - N 个节点的集群 - 任何节点可作为主节点 - 所有写入操作都在主节点上 - 自动故障转移 - 自动恢复 ##### 设置副本集 接下来我们来看一下如何将独立的 MongoDB 实例转换为副本集。要转换为副本集,需要按照以下几个步骤操作: 1. 关闭正在运行的 MongoDB 服务器; 2. 通过指定 --replSet 选项启动 MongoDB 服务器,--replSet 的基本语法如下所示: ```shell mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME" ``` 3. 【示例】在 27017 端口上启动名为 rs0 的 mongod 实例: ```shell mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0 ``` 现在启动命令提示符并连接到此 mongod 实例,在Mongo客户端中,请使用 rs.initiate() 命令来启动新的副本集。要检查副本集配置,请使用 rs.conf() 命令。要检查副本集的状态,请使用 rs.status() 命令。 ##### 将成员添加到副本集 要将成员添加到副本集,需要在多台计算机上启动 mongod 实例。现在使用 rs.add() 命令来启动一个 mongo 客户端,rs.add() 命令的基本语法如下: ```shell >rs.add(HOST_NAME:PORT) ``` 【示例】假设您的 mongod 实例名称为 mongod1.net,并且它运行在 27017 端口上。要将此实例添加到副本集,需要在 Mongo 客户端中使用 rs.add() 命令。 ```shell >rs.add("mongod1.net:27017") ``` 仅当连接到主节点时,才能将 mongod 实例添加到副本集。要检查您是否连接到主服务器,可以在 mongo 客户端中使用 db.isMaster() 命令。
顶部
收展
底部
[TOC]
目录
第一章 NoSQL和MongoDB简介
第二章 MongoDB安装
第三章 MongoDB概念
第四章 MongoDB数据类型
第五章 MongoDB连接数据库
第六章 MongoDB数据库增删查
第七章 MongoDB集合增删查
第八章 MongoDB文档增删查改
第九章 MongoDB查询构造器
第十章 MongoDB备份与恢复
第十一章 MongoDB复制(副本集)
第十一章 MongoDB分片
第十一章 MongoDB监控
第十二章 MongoDB索引
相关推荐
MongoDB进阶
PHP操作MongoDB
MongoDB用户及安全
MongoDB优化