注:本文基于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()添加其他节点了。


参考文档:

  1. https://www.mongodb.com/docs/v4.2/reference/method/Mongo.setReadPref/#Mongo.setReadPref

MongoDB secondary节点相关推荐

  1. [Mongodb 5.0]将副本集中的Secondary节点变为Arbiter节点

    前言 Arbiter节点也被成为仲裁节点,也就是用来投票用的节点.当我们不在想将副本集中的某个Secondary节点用来保存数据的时候,而是仅仅想用它在选举Primary节点时进行投票使用,那么我们就 ...

  2. MongoDB 单节点升级为副本集高可用集群

    文章目录 项目背景 副本集架构 升级架构前注意事项 一.原单节点MongoDB配置信息 1.1 原配置文件 1.2 在原来配置文件增加副本集配置 二.新增节点信息 2.1 新增节点配置文件 2.2 启 ...

  3. mongodb 10、mongodb从节点失联解决方法

    判断是否可以通过重启修复从mongo失联的问题的方法: 1 进入primary主mongo结点执行db.getReplicationInfo() 查看oplog的时间timeDiffHours 样例输 ...

  4. Linux下安装MongoDB单节点

    MongoD单节点环境安装(Linux) 安装包 下载地址: (https://www.mongodb.com/download-center) 用户权限/目录 1.创建 dbuser用户 group ...

  5. MongoDB 从节点 延迟的测试

    关于从节点 延迟的测试: 使用手工设置延迟时间的方法,在两个数据库中测试了主从 写/读的延迟时间, 主从节点的延迟时间大约 在 0.3秒 . 这个测试比我想象中的要大很多,开始以为延迟也就在10 -3 ...

  6. MongoDB数据节点基础操作

    1.查看集群中各节点的状态: rs0:PRIMARY> rs.status() 2.查看集群中各节点配置情况: rs0:PRIMARY> rs.conf() 3.主节点降级为从节点: rs ...

  7. 技术分享 | MySQL中MGR中SECONDARY节点磁盘满,导致mysqld进程被OOM Killed

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 在MGR测试中,人为制造磁盘满问题后,节点被oom killed 问题描述 在对 ...

  8. (原创)让mongodb的secondary支持读操作

    对于replica set 中的secondary 节点默认是不可读的.在写多读少的应用中,使用Replica Sets来实现读写分离.通过在连接时指定或者在主库指定slaveOk,由Secondar ...

  9. MongoDB分布式原理以及read-preference和readConcern解决读写一致性问题

    MongoDB词汇表: https://docs.mongodb.com/manual/reference/glossary/#term-replica-set MongoDB分布式原理 primar ...

  10. MongoDB 搭建副本集

    副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的更新由Primary ...

最新文章

  1. 兔子--eclipse设置编码格式
  2. Java-Web HTTP协议
  3. c语言程序设计开封电大,最新电大《C语言程序设计》题库及答案.docx
  4. React 和 Vue的特点
  5. 计算机科学与技术博士论文,计算机科学与技术系博士学位论文答辩.PDF
  6. 写一个Android输入法01——最简步骤
  7. (8)Node.js 模块介绍
  8. 外服封号_王者荣耀外服玩家被封号十年吐槽无辜,官方复审后,玩家表示轻了...
  9. CSS中选择器优先级顺序实战讲解
  10. andriod socket开发问题小结
  11. java pdfbox 提取pdf 标题_java – 使用pdfbox从PDF文件中提取文本
  12. 俄罗斯方块游戏设计的有关问题
  13. IC卡防复制 设备联网 动态密钥方案说明 一卡通 门禁卡防破解Mifare卡低成本动态加密实现思路
  14. 以太网转串口方案总结
  15. 软件工程案例-仓库管理系统简单版
  16. Mac 屏幕共享和远程控制
  17. 官方rom提取原签名工具_官方和第三方ROM的提取与分解
  18. 安卓手机APP进行自动化点击软件详解
  19. 最小相位滤波器 matlab,基于MATLAB最小相位数字滤波器的设计方法研究
  20. 快手与内涵段子最本质的区别

热门文章

  1. ISA防火墙的基础应用与配置
  2. java内存模型JMM理解整理
  3. 190115_Vue下路由History mode导致页面无法渲染的原因
  4. 计算机专业英语常用词汇整理
  5. linux系列---常见命令
  6. JAVA POI导入Excel, 和百分比有关的 百分数格式问题
  7. REST-assured基本使用
  8. 计算机过程控制系统教材,过程控制系统——高等院校教材
  9. 课堂经验值管理小程序_小程序刷新课堂评价 “量子奖状”能量大
  10. c++学习笔记:黑客攻击系统-功能菜单