副本集(Replica Set)
副本集是一组 MongoDB实例保持其相同数据集的集群 由一个主(Primary)服务器和多个副本(Secondary) 服务器构成。通过复制(Replication)将数据的更新由主服务器推送到其它副本服务器上,在一定的延近迟之后,达到每个MongoDB实例维护相同的数据集副本。副本集通过维护冗余的数据库副本、读写分离和故障自动转移的功能,摆脱数据库在使用过程中出现的环境故障影响,是所有生产环境部署的基础。
副本集有三个主要成员主节点(Primary)、副本节点(Secondary)、仲裁节点(Arbiter)
副本集成员架构
客户端程序(Client Application)通过驱动器(Driver)连接副本集主节点(Primary)进行读写操作,当主节点数据副本发生变化,此时副本节点(Secondary)通过Replication(复制)同步主节点的数据副本,使副本集中副本节点与主节点存储相同数据副本。
副本集中的各节点还会通过传递心跳信息(Heartbeat)来检测各自的健康状态。当主节点故障时,拥有投票权的副本节点和仲裁节点(Arbiter)会触发一次新的选举操作,并从副本节点中选举出新的主节点,以确保副本集正常运行。
MongoDB副本集成员数与oplog
MongoDB官网建议当副本集成员个数大于二时,推荐副本集成员个数为奇数个,而不使用仲裁节点.从MongoDB3.0版本起,副本集可以多达五十名成员,最多七个参与主节点选举投票的成员,并且其它成员不得拥有投票权。
oplog是一个特殊的固定集合,它保存了副本集主节点中所有的数据变化记录,所有副本集成员(除仲裁节点)都在local.oplog.rs集合中包含一个oplog的副本,每个副本节点的oplog都会保持与主节点的 oplog完全一致的状态(可能会有一些延迟)。
部署副本集环境准备
首先配置副本路径,也就是配置三个实例,在配置之前先停止正在运行的mongod.exe,也就是我们的服务。副本集各服务器的基本信息及角色分配如下表。
将之前配置好的mongodb里的bin复制至mongodb1中,在mongodb1中新建db文件夹和log文件夹存在对应的数据库数据以及日志数据。