MongoDB副本集
目录一.副本集概述副本集的功能:二.副本集成员1.主结点2.副本结点3.仲裁结点三.部署副本集1.安装副本集2.启动副本集3.关闭防火墙4.副本集初始化5.添加副本集6.查看副本集成员状态一.副本集概述副本集的功能:(1)数据冗余:副本集可以确保副本结点与主结点数据的更新,以防止单个数据库的服务宕机造成数据丢失的问题。这些副本结点可以和主结点位于同一个数据中心或处于安全考虑分布于其他数据中心(2)
目录
一.副本集概述
副本集的功能:
(1)数据冗余:副本集可以确保副本结点与主结点数据的更新,以防止单个数据库的服务宕机造成数据丢失的问题。这些副本结点可以和主结点位于同一个数据中心或处于安全考虑分布于其他数据中心
(2)自动故障转移:副本集没有固定的主结点,整个集群会选举出一个主结点,当这个主结点不会正常工作时,会选举一个副本结点切换为主结点,客户端会连接到这个新的主结点,并且数据和应用程序都将保持可用。MongoDB副本集实现这样的主/副本切换是自动的,因此副本集是保证MongoDB高可用的基础。
(3)读写分离:副本集可以将读取请求分流到所有副本集上,以减轻主结点的读写压力。
二.副本集成员
1.主结点
主结点是副本集中负责处理客户端请求和读写数据的主要成员。主节点通过iplog(操作日志)记录所有操作。副本集中有且只有一个主结点,如果当主结点不可用时,则会从副本结点中选举出新的主结点。
2.副本结点
副本结点定期轮询主结点来获取oplog记录的操作内容,然后对自己的数据副本执行这些操作,从而保证副本结点的数据副本与主结点保持一致。副本集中可以有一个或者多个副本结点。当主结点宕机时,副本集会根据副本结点的优先级进行选举,确定哪个副本结点成为新的主结点。
3.仲裁结点
仲裁结点不会同步主结点的数据副本,也不会被选举为主结点,它主要时参与选举投票。由于仲裁结点没有访问压力,比较空闲,因此仲裁结点需要的资源很小。
三.部署副本集
开展副本集之前首先规划各服务器的基本信息以及角色分配
虚拟机名称 | IP地址 | 成员角色 | 主机名(hostname) |
nosql01 | 192.168.47.130 | 主结点 | nosql01 |
nosql02 | 192.168.47.131 | 副本结点 | nosql02 |
nosql03 | 192.168.47.133 | 副本结点 | nosql03 |
1.安装副本集
创建一个虚拟机之后, 可以通过克隆的方式进行克隆另外两台虚拟机,也可以直接创建另外两台台虚拟机,还可以通过复制已经创建好的虚拟机文件。三个虚拟机安装好之后,打开配置文件,修改三台centos的ip地址。如果通过克隆或者复制的方式需要修改hostname
三台服务器分别执行下面的命令,执行之后init 6进行重启
修改命令:
hostnamectl set-hostname nosql01
hostnamectl set-hostname nosql02
hostnamectl set-hostname nosql03
在linux下安装MongoDB,可以看下面这一篇博客
https://blog.csdn.net/m0_57979544/article/details/124329983?spm=1001.2014.3001.5501
上面链接的mongod.conf配置文件需要修改一下:
三台服务器mongod.conf需要修改成如下图
主结点(nosql01):bindIP为:192.168.47.130
副结点(nosql02):bindIP为:192.168.47.131
副结点(nosql03):bindIP为:192.168.27.133
其他的都一样
2.启动副本集
分别在3台服务器nosql01,nosql02,nosql03的/opt/servers/mongodb/mongodb-4.2/bin目录下以副本集模式启动MongoDB,这里以nosql01为例进行操作
#进入MongoDB的bin目录下
cd /opt/servers/mongodb/mongodb-4.2/bin
#以副本集模式启动MongoDB
./mongod --replSet bigdata --dbpath=/opt/servers/mongodb/mongodb-4.2/data/db --logpath=/opt/servers/mongodb/mongodb-4.2/data/logs/mongod.log --bind_ip 192.168.47.130 --logappend --fork
分别在三台服务器上面输入如上命令:
3.关闭防火墙
命令:systemctl stop firewalld.service
在三台服务器上分别执行上述命令
4.副本集初始化
在哪一台服务器上面进行初始化,哪一台服务器就是主结点。本次时nosql01为主结点,所以需要在nosql01这里进行初始化
#进入MongoDB的bin目录下
cd /opt/servers/mongodb/mongodb-4.2/bin
#登录MongoDB客户端
./mongo --host 192.168.47.130
#切换到admin数据库下
use admin
#初始化
rs.initiate()
等待几秒之后会自己选举自己成为primary(主结点)
出现bigdata:OTHER>后按下回车,会出现primary
5.添加副本集
rs.add("192.168.47.131:27017")
rs.add("192.168.47.133:27017")
出现以上{ok:1}表明加入成功
在nosql02和nosql03中输入下图的命令:显示secondary
6.查看副本集成员状态
命令:
rs.status()
更多推荐
所有评论(0)