mongodb的架构 副本集搭建

简介: 文章来源本人博客 http://blog.teier.cn
早期的版本使用master-slave,一主一从和mysql类型,但slave在此架构中为只读,如果主库宕机后,从库不能自动切换为主 需要手动才行
后期mongodb开发了个新的架构方案副本集,所以呢,目前已经淘汰master-slave的架构 改为可副本集,这种模式有一个主(primary),和多个从(secondary),只读,给他们设置权重,当主宕掉后,权重最高的从切换为主。其他从会自动识别新的主
在次架构还可以建立一个仲裁(arbiter)的角色,它只负责裁决,而不存储数据,它清楚的告诉是否有问题,防止脑裂问题
在此架构中读写数据都是在主上,如果想实现负载均衡的目的需要手动指定读库的目标server
副本集搭建:
我有三台机器分别是192.168.191.21 192.168.191.22 192.168.191.23 其中21为主 22 23为从
1,首先三台机器分别安装mongodb
参照我之前安装mongodb的方法
cd /etc/yum.repos.d
vim mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
yum install -y mongodb-org
2,三台机器编辑配置文件
vim /etc/mongod.conf
找到replication 删除# 然后在replication下面 写上如下俩行 记得前面有俩个空格
replication
oplogSizeMB: 20 //类似mysql binlog 20M
replSetName: sonice //副本集的名称
找到bindIp后面的127.0.0.1加上本机的内网ip 21,22,23
3,分别重启三台机器
systemctl restart mongod
4,连接主,在主上运行命令mongo
use admin
config={_id:”sonice”,members:[{_id:0,host:”192.168.191.21:27017″},{_id:1,host:”192.168.191.22:27017″},{id:2,host:”192.168.191.23:27017″}]}
// 其中sonice为副本集的名称 ,id为0的 是 主 其他id为1和2的是从
5,初始化
rs.initiate(config) //返回ok:1为正确
配置完之后 使用rs.status() 查看副本集的状态
如果俩个从上的状态为”stateStr”:”STARTUP”,则重新配置一遍即可
再次使用rs.status() 会发现从的状态变为SECONDARY 主的状态为STARTUP
mongodb的权重设置
使用rs.config 查看三台机器的priority 权重都是 1
更改他们的权重 ,设置一个变量 用索引的方式 来设置权重
首先进入主的mongo里面 执行下面5行操作
cfg = rs.config()
cfg.members[0].priority = 3
cfg.members[0].priority = 3
cfg.members[0].priority = 3
rs.reconfig(cfg)
这样设置下来 用rc.status() 可以看到21的主上机器权重为3 22的权重为2 23的权重为1
这样 当21宕了 会优先跳到22上 , 当21恢复后又跳回21为主了
相关文章
|
9月前
|
存储 NoSQL 前端开发
【赵渝强老师】MongoDB的分布式存储架构
MongoDB分片通过将数据分布到多台服务器,实现海量数据的高效存储与读写。其架构包含路由、配置服务器和分片服务器,支持水平扩展,结合复制集保障高可用性,适用于大规模生产环境。
626 1
|
存储 NoSQL MongoDB
MongoDB 复制(副本集)
10月更文挑战第17天
295 2
MongoDB 复制(副本集)
|
NoSQL 容灾 MongoDB
MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份
在资源受限的情况下,为了实现MongoDB的高可用性,本文探讨了两种在两台服务器上部署MongoDB的方案。方案一是通过主备身份轮换,即一台服务器作为主节点,另一台同时部署备节点和仲裁节点;方案二是利用`priority`设置实现自动主备切换。两者相比,方案二自动化程度更高,适合追求快速故障恢复的场景,而方案一则提供了更多的手动控制选项。文章最后对比了这两种方案与标准三节点副本集的优缺点,指出三节点方案在高可用性和数据一致性方面表现更佳。
1564 5
|
存储 NoSQL Shell
MongoDB复制(副本集)总结
这篇文章是关于MongoDB副本集的总结,包括复制原理、设置副本集、案例分析等内容。
506 1
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB复制集的体系架构
MongoDB的复制集是一种集群技术,由一个Primary节点和多个Secondary节点组成,实现数据的高可用性。Primary节点处理写入请求,Secondary节点同步数据。当Primary节点故障时,Secondary节点可通过选举成为新的Primary节点。视频讲解和示意图详见正文。
261 0
|
NoSQL MongoDB Docker
求助,有没有大神可以找到arm64架构下mongodb的3.6.8版本的docker镜像?
在Docker Hub受限的情况下,寻求适用于ARM架构的docker镜像资源或拉取链接,以便在x86架构上获取;内网中的机器为ARM架构,因此优先请求适合ARM的Docker镜像或Dockerfile,非常感激您的帮助。
|
存储 NoSQL MongoDB
MongoDB技术架构详解
MongoDB技术架构详解
|
NoSQL MongoDB Windows
MongoDB 读写分离——Windows MongoDB 副本集配置
MongoDB 读写分离——Windows MongoDB 副本集配置
543 0
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
12月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
1285 79

推荐镜像

更多