MongoDB secondary节点
注:本文基于MongoDB 4.2编写
1 连接到secondary
连接时不设置replicaset即可连接到指定的secondary节点,
[root@node1 ~]# mongo 'mongodb://admin:admin@192.168.0.181:27017/admin?authSource=admin'
MongoDB shell version v4.2.19
connecting to: mongodb://192.168.0.181:27017/admin?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("00868506-43b8-4ce3-bd6c-fa583b8f2ae6") }
MongoDB server version: 4.2.19
mdbA:SECONDARY>
2 从secondary读取数据
默认情况下,replica模式下的集群,所有的读写都是要经过primary节点,
mdbA:SECONDARY> show collections
2022-09-20T17:49:06.511-0700 E QUERY [js] uncaught exception: Error: listCollections failed: {"operationTime" : Timestamp(1663721343, 1),"ok" : 0,"errmsg" : "not master and slaveOk=false","code" : 13435,"codeName" : "NotPrimaryNoSecondaryOk",...}
} :
...
如果需要从secondary读取数据,需要额外设置,
mdbA:SECONDARY> db.getMongo().setSecondaryOk();
mdbA:SECONDARY> show collections
user
通过setSecondaryOk()设置仅对当前连接有效,如果连接断开重连后,配置就会失效。
但是在高版本的MongoDB上,setSecondaryOk()已经被废弃,需要使用setReadPref(‘secondary’)命令。
db.getMongo().setReadPref('secondary')
3 从secondary恢复集群
如果由于异常,我们的primary节点损坏,无法恢复,只剩secondary节点,这个时候还是可以恢复集群的,主要的就是要将secondary节点强制升主,这样之后的操作就简单了。
假设我们保留的secondary节点是第一个member,那我们就将配置的member重置为只包含该节点
mdbA:SECONDARY> cfg=rs.conf()
mdbA:SECONDARY> cfg.members=[cfg.members[0]]
[{"_id" : 2,"host" : "192.168.0.181:27017","arbiterOnly" : false,"buildIndexes" : true,"hidden" : false,"priority" : 1,"tags" : {},"slaveDelay" : NumberLong(0),"votes" : 1}
]
然后强制重新应用配置,记得使用参数{force: true}
mdbA:SECONDARY> rs.reconfig(cfg, {force: true})
{"ok" : 1,"$clusterTime" : {"clusterTime" : Timestamp(1664289924, 1),"signature" : {"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),"keyId" : NumberLong(0)}},"operationTime" : Timestamp(1664289761, 1)
}
mdbA:PRIMARY>
由提示符可知,secondary节点已经被升级为primary节点,之后就可以正常使用rs.add()添加其他节点了。
参考文档:
- https://www.mongodb.com/docs/v4.2/reference/method/Mongo.setReadPref/#Mongo.setReadPref
MongoDB secondary节点相关推荐
- [Mongodb 5.0]将副本集中的Secondary节点变为Arbiter节点
前言 Arbiter节点也被成为仲裁节点,也就是用来投票用的节点.当我们不在想将副本集中的某个Secondary节点用来保存数据的时候,而是仅仅想用它在选举Primary节点时进行投票使用,那么我们就 ...
- MongoDB 单节点升级为副本集高可用集群
文章目录 项目背景 副本集架构 升级架构前注意事项 一.原单节点MongoDB配置信息 1.1 原配置文件 1.2 在原来配置文件增加副本集配置 二.新增节点信息 2.1 新增节点配置文件 2.2 启 ...
- mongodb 10、mongodb从节点失联解决方法
判断是否可以通过重启修复从mongo失联的问题的方法: 1 进入primary主mongo结点执行db.getReplicationInfo() 查看oplog的时间timeDiffHours 样例输 ...
- Linux下安装MongoDB单节点
MongoD单节点环境安装(Linux) 安装包 下载地址: (https://www.mongodb.com/download-center) 用户权限/目录 1.创建 dbuser用户 group ...
- MongoDB 从节点 延迟的测试
关于从节点 延迟的测试: 使用手工设置延迟时间的方法,在两个数据库中测试了主从 写/读的延迟时间, 主从节点的延迟时间大约 在 0.3秒 . 这个测试比我想象中的要大很多,开始以为延迟也就在10 -3 ...
- MongoDB数据节点基础操作
1.查看集群中各节点的状态: rs0:PRIMARY> rs.status() 2.查看集群中各节点配置情况: rs0:PRIMARY> rs.conf() 3.主节点降级为从节点: rs ...
- 技术分享 | MySQL中MGR中SECONDARY节点磁盘满,导致mysqld进程被OOM Killed
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 在MGR测试中,人为制造磁盘满问题后,节点被oom killed 问题描述 在对 ...
- (原创)让mongodb的secondary支持读操作
对于replica set 中的secondary 节点默认是不可读的.在写多读少的应用中,使用Replica Sets来实现读写分离.通过在连接时指定或者在主库指定slaveOk,由Secondar ...
- MongoDB分布式原理以及read-preference和readConcern解决读写一致性问题
MongoDB词汇表: https://docs.mongodb.com/manual/reference/glossary/#term-replica-set MongoDB分布式原理 primar ...
- MongoDB 搭建副本集
副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的更新由Primary ...
最新文章
- 兔子--eclipse设置编码格式
- Java-Web HTTP协议
- c语言程序设计开封电大,最新电大《C语言程序设计》题库及答案.docx
- React 和 Vue的特点
- 计算机科学与技术博士论文,计算机科学与技术系博士学位论文答辩.PDF
- 写一个Android输入法01——最简步骤
- (8)Node.js 模块介绍
- 外服封号_王者荣耀外服玩家被封号十年吐槽无辜,官方复审后,玩家表示轻了...
- CSS中选择器优先级顺序实战讲解
- andriod socket开发问题小结
- java pdfbox 提取pdf 标题_java – 使用pdfbox从PDF文件中提取文本
- 俄罗斯方块游戏设计的有关问题
- IC卡防复制 设备联网 动态密钥方案说明 一卡通 门禁卡防破解Mifare卡低成本动态加密实现思路
- 以太网转串口方案总结
- 软件工程案例-仓库管理系统简单版
- Mac 屏幕共享和远程控制
- 官方rom提取原签名工具_官方和第三方ROM的提取与分解
- 安卓手机APP进行自动化点击软件详解
- 最小相位滤波器 matlab,基于MATLAB最小相位数字滤波器的设计方法研究
- 快手与内涵段子最本质的区别