一.副本集概述
副本集的功能:
(1)数据冗余:副本集可以确保副本结点与主结点数据的更新,以防止单个数据库的服务宕机造成数据丢失的问题。这些副本结点可以和主结点位于同一个数据中心或处于安全考虑分布于其他数据中心
(2)自动故障转移:副本集没有固定的主结点,整个集群会选举出一个主结点,当这个主结点不会正常工作时,会选举一个副本结点切换为主结点,客户端会连接到这个新的主结点,并且数据和应用程序都将保持可用。MongoDB副本集实现这样的主/副本切换是自动的,因此副本集是保证MongoDB高可用的基础。
(3)读写分离:副本集可以将读取请求分流到所有副本集上,以减轻主结点的读写压力。
二.副本集成员
1.主结点
主结点是副本集中负责处理客户端请求和读写数据的主要成员。主节点通过iplog(操作日志)记录所有操作。副本集中有且只有一个主结点,如果当主结点不可用时,则会从副本结点中选举出新的主结点。
2.副本结点
副本结点定期轮询主结点来获取oplog记录的操作内容,然后对自己的数据副本执行这些操作,从而保证副本结点的数据副本与主结点保持一致。副本集中可以有一个或者多个副本结点。当主结点宕机时,副本集会根据副本结点的优先级进行选举,确定哪个副本结点成为新的主结点。
3.仲裁结点
仲裁结点不会同步主结点的数据副本,也不会被选举为主结点,它主要时参与选举投票。由于仲裁结点没有访问压力,比较空闲,因此仲裁结点需要的资源很小。
三.部署副本集
开展副本集之前首先规划各
1.安装副本集
创建一个虚拟机之后, 可以通过克隆的方式进行克隆另外两台虚拟机,也可以直接创建另外两台台虚拟机,还可以通过复制已经创建好的虚拟机文件。三个虚拟机安装好之后,打开配置文件,修改三台centos的ip地址。如果通过克隆或者复制的方式需要修改hostname
服务器的基本信息以及角色分配
上面链接的mongod.conf配置文件需要修改一下:
2.启动副本集
分别在3台服务器nosql01,nosql02,nosql03的/opt/servers/mongodb/mongodb-4.2/bin目录下以副本集模式启动MongoDB,这里以nosql01为例进行操作分别在三台服务器上面输入如上命令:
3.关闭防火墙![](https://img-blog.csdnimg.cn/direct/5f2a372f7a9640bc995d2b82bb843fe1.png)
4.副本集初始化
在哪一台服务器上面进行初始化,哪一台服务器就是主结点。本次时nosql01为主结点,所以需要在nosql01这里进行初始化
5.添加副本集
rs.add("192.168.47.131:27017")
rs.add("192.168.47.133:27017")
出现以上{ok:1}表明加入成功
在nosql02和nosql03中输入下图的命令:显示secondary