Linux 搭建MongoDB复制集群
2021/5/19 2:25:25
本文主要是介绍Linux 搭建MongoDB复制集群,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、介绍
1、节点类型
主节点(Primary):负责处理客户端的请求
从节点(Secondary):负责复制主节点上的数据。可读不可写
仲裁节点(Arbiter):不保留任何数据,只具有投票选举作用。
MongoDB实现复制集群至少需要两个节点(一主一从),仲裁节点为可选,但一般会一起作用
2、主从复制方式
从节点定期轮询从主节点操作日志中获取操作记录,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致
二、环境准备
虚拟机三台,分别安装好MongoDB。服务网格信息如下:
主机名 | 操作系统 | IP | Node | 端口 |
vm-xwj100 | Centos7.6 | 192.168.20.100 | Primary | 27017 |
vm-xwj101 | Centos7.6 | 192.168.20.101 | Secondary | 27017 |
vm-xwj102 | Centos7.6 | 192.168.20.102 | Arbiter | 27017 |
三、应用配置
修改三个节点下的mongo.conf配置文件
主节点(vm-xwj100):
#数据保存路径 dbpath=/usr/local/mongo/data/db/ #日志保存路径 logpath=/usr/local/mongo/logs/mongodb.log #进程描述文件 pidfilepath=/usr/local/mongo/pids/mongo.pid #日志追加写入 logappend=true #复制集名称 replSet=rs0 bind_ip_all=true #mongo默认端口 port=27017 #操作日志容量 oplogSize=10000 #开启子进程 fork=true
从节点(vm-xwj101):
#数据保存路径 dbpath=/usr/local/mongo/data/db/ #日志保存路径 logpath=/usr/local/mongo/logs/mongodb.log #进程描述文件 pidfilepath=/usr/local/mongo/pids/mongo.pid #日志追加写入 logappend=true #复制集名称 replSet=rs0 bind_ip_all=true #mongo默认端口 port=27017 #操作日志容量 oplogSize=10000 #开启子进程 fork=true
仲裁节点(vm-xwj102):
#数据保存路径 dbpath=/usr/local/mongo/data/db/ #日志保存路径 logpath=/usr/local/mongo/logs/mongodb.log #进程描述文件 pidfilepath=/usr/local/mongo/pids/mongo.pid #日志追加写入 logappend=true #复制集名称 replSet=rs0 bind_ip_all=true #mongo默认端口 port=27017 #操作日志容量 oplogSize=10000 #开启子进程 fork=true
四、初始化复制集群
1、在所有节点启动mongo服务端
/usr/local/mongo/bin/mongod -f /usr/local/mongo/conf/mongo.conf
2、登录客户端,访问主节点
/usr/local/mongo/bin/mongo --host 192.168.20.100 --port 27017
3、初始化复制集
rs.initiate({ _id:"rs0", members:[ {_id:0, host:"192.168.20.100:27017", priority:2}, {_id:1, host:"192.168.20.101:27017", priority:1}, {_id:2, host:"192.168.20.102:27017", arbiterOnly:true} ] });
_id: "rs0": 复制集名称,与配置文件对应
priority: 权重(数字越大优先级越高)
arbiterOnly: 是否是仲裁节点
执行成功后,如下所示(命令行符号由 > 变为 rs0:SECONDARY>,然后会进行选举,最终变成rs0:Primary>):
4、查看复制集状态
rs.status()
5、查看当前节点是否为主节点
rs.isMaster()
总结:
1、当主节点宕机时,仲裁节点会根据配置信息中的权重值优先选举权重高的节点作为主节点继续提供服务。当宕机的主节点回复后,复制集会恢复原主节点状态,临时主节点重新成为从节点。
踩坑:
1、初始化时,报如下错误:
"errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: 192.168.20.101:27017 failed with Error connecting to 192.168.20.101:27017 :: caused by :: No route to host, 192.168.20.102:27017 failed with Error connecting to 192.168.20.102:27017 :: caused by :: No route to host", "code" : 74, "codeName" : "NodeNotFound",
问题原因:初始化复制集群时,用的三台机器,主节点想连通其它节点,需要关闭防火墙
解决办法:在从节点和仲裁节点上,关闭防火墙:systemctl stop firewalld
2、在从节点上读取数据失败,报如下错误:
问题原因:默认情况下直接连从节点是无法查询数据的。因为从节点是不可读的
解决办法:开启从节点读权限。在从节点客户端输入命令 rs.slaveOk(true)
这篇关于Linux 搭建MongoDB复制集群的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南