一、复制(副本集)
1)复制介绍
(1)解决问题(在集群中,保证MongoDB数据处理的正常进行):通过复制功能实现多服务器的数据冗余备份操作。使备份数据的服务器具备额外提供独立读访问请求的功能(分布式读取数据,解决高并发客户端读取用户访问问题);当服务器出故障时,提供自动故障转移、自动数据恢复。
(2)副本集(replica)是一种具有自动选举机制的主从复制。
(3)副本集一般包括:一个主节点(仅一个Primary Node)、从节点(至少两个Secondary Node)、选择另外一个独立节点作为仲裁节点(管理副本集数据复制)。
(4)主节点(Primary Node)负责接收客户端写入数据库操作。(大访问量的情况下,主节点负责读的任务,会存在瓶颈)
从节点(Secondary Node)负责从主节点复制数据,保证主从节点数据的一致性和安全性。
(5)复制依据:本地的Oplog(复制操作日志local.oplog.rs)集合(主从节点同步Oplog更新)。
(6)仲裁节点(只安装mongod.exe)功能:通过心跳功能保持与其它节点的联系,若主节点故障,通过投票选举,快速产生新的主节点。
(7)insert、update等写命令里需要设置{w:“majority”}参数,写入主节点的数据才能同时被复制到从节点上。
注意日文系统中的¥就是\
2)学习环境部署过程
(1)安装MongoDB,然后将安装目录中的data目录下创建data文件夹和log文件夹。
(2)将安装好得MongoDB目录中的文件复制到另外两个文件夹(mongodb1、mongodb2)中
(3)安装主节点集群:(注意日文系统中的¥就是\)
注意:使用repl命令选项指定副本集名称
(4)安装从节点集群:
(5)设置集群配置文件:
注意:启动任意一个的mongo进行设置。
注意: ①priority:副本级节点选举优先级,数据越大优先级越高。
②rs.conf():查看副本集配置对象内容。
③rs.status():查看副本集状态。
3)实际测试及使用环境部署、异地环境部署参考
MongoDB官网:https://docs.mongodb.com/manual/replication/
4)将其它成员(MongoDB服务器)添加到副本集中(该操作只能在主节点中进行)
(1)rs.add()方法
①语法
rs.add(<host>,arbiterOnly)
参数说明: 1、host:
参数类型为字符串,指定副本成员的主机名和端口号。
参数类型为文档,指定在members数组中找到的副本集成员配置文档(必须指定新成员[n]._id和[n].host)。
2、arbiterOnly:可选项,当host为字02符串时使用,true:仲裁节点;false:不是仲裁节点(默认)。
②示例
1、字符串型:
rs.add("mongodb.top:27017") //服务器域名:mongodb.top,端口号:27017
2、文档型:
rs.add({"mongodb.top:27017",priority:0}) //服务器域名:mongodb.top,端口号:27017
//priority:节点选举优先级,数字越大优先级越高