对于replica set 中的secondary 节点默认是不可读的。在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。

如果通过shell访问mongo,要在secondary进行查询。会出现如下错误:

imageSet:SECONDARY> db.fs.files.find()
error: { "$err" : "not master and slaveOk=false", "code" : 13435 }
有两种方法实现从机的查询:
第一种方法:db.getMongo().setSlaveOk();
第二种方法:rs.slaveOk();
但是这种方式有一个缺点就是,下次再通过mongo进入实例的时候,查询仍然会报错,为此可以通过下列方式

vi ~/.mongorc.js

增加一行rs.slaveOk();
这样的话以后每次通过mongo命令进入都可以查询了
如果是通过java访问secondary的话则会报下面的异常
com.mongodb.MongoException: not talking to master and retries used up
解决的办法很多。
第一种方法:在java代码中调用dbFactory.getDb().slaveOk();
第二种方法:在java代码中调用
dbFactory.getDb().setReadPreference(ReadPreference.secondaryPreferred());//在复制集中优先读secondary,如果secondary访问不了的时候就从master中读

dbFactory.getDb().setReadPreference(ReadPreference.secondary());//只从secondary中读,如果secondary访问不了的时候就不能进行查询
第三种方法:在配置mongo的时候增加slave-ok="true"也支持直接从secondary中读
<mongo:mongo id="mongo" host="${mongodb.host}" port="${mongodb.port}">
        <mongo:options slave-ok="true"/> 
</mongo:mongo>

转载于:https://www.cnblogs.com/ExMan/p/9571988.html

(原创)让mongodb的secondary支持读操作相关推荐

  1. 如何修改 SAP ABAP OData 模型,使其支持 $expand 操作试读版

    正如本教程的开篇介绍文章SAP OData 开发教程 - 从入门到提高(包含 SEGW, RAP 和 CDP)所提到的,SAP OData 服务开发,从实现技术上来说,可以分为三大类.因此本教程也分为 ...

  2. 【MongoDB for Java】Java操作MongoDB

    软件151--熊佳杨 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开发依赖库: JavaEE5.mongo-2.5.3. ...

  3. mongodb for java_【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  4. 数据库应用----Mongodb 4.0 版本 基础操作---复制集,选举方法、部署认证 (二)

    Mongodb 4.0 版本 基础操作-复制集,选举方法.部署认证 (二) 文章目录 Mongodb 4.0 版本 基础操作---复制集,选举方法.部署认证 (二) 一.MongoDB 复制集 二.部 ...

  5. MongoDB学习笔记(基础操作篇)

    一.MongoDB相关概念 1.1 MongoDB相关概念 传统的关系型数据库(如MySQL),在数据操作的"三高"需求以及应对Web2.0的网站需求面前,显得力不从心. 解释:& ...

  6. 【大数据存储技术】实验2:MongoDB数据库的部署和操作

    目录 1.实现MongoDB单实例的部署 1.1 安装MongoDB(Ubuntu版本:22.04 LTS) 1.1.1 查看Ubuntu版本 1.1.2 使用Ubuntu命令安装 1.2 启动Mon ...

  7. LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。...

    Basic Compaction 为了保持LSM的读操作相对较快,维护并减少sstable文件的个数是很重要的,所以让我们更深入的看一下合并操作.这个过程有一点儿像一般垃圾回收算法. 当一定数量的ss ...

  8. mysql dba系统学习(18)mysql主从复制的实现 mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡

    mysql主从复制的实现 1.MySQL复制的实现原理 MySQL支持单向.双向复制.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入一个二进制日志文 ...

  9. java mongodb 增删改查_java操作mongodb:基本的增删改查

    java操作mongodb的代码,包含基本的增删改查操作 获取数据库连接工具类 package com.liuc.db;import java.net.UnknownHostException;imp ...

最新文章

  1. 01pxc集群的部署
  2. Ansible16:Playbook高级用法
  3. Python和Java就业前景对比
  4. 权限操作-springSecurity概述及快速入门步骤分析
  5. centos 对已有卷扩容_centos7下对原有磁盘分区进行在线扩容
  6. 递归和分治思想及其应用
  7. stm32g4 下载算法_难道STM32G4芯片的主频才到80MHz?
  8. Codeforces Round #242 (Div. 2)C(找规律,异或运算)
  9. F# 与 WPF 之多语言实现MVVM(二)
  10. 更新性能服务器图片介绍,图文并茂 讲述企业版Linux性能发展史
  11. 项目答辩演讲稿(详细原文)
  12. [CSS]好看的渐变色网站
  13. lingo入门——从河北省第三届研究生建模竞赛B题开始
  14. 使用Android Studio开发widget安卓桌面插件
  15. MAP对象(js从入门到疯癫)
  16. ftp软件绿色版,四款好用的绿色版ftp软件
  17. 营销之父科特勒万字演讲实录:营销的未来(含PPT和视频回放)
  18. 经典代码-request请求获取参数(post和get两种方式)
  19. JavaScript高级 ES7-ES13 新特性
  20. 销量“掉队”,零跑汽车火力全开

热门文章

  1. SDL 库 无法解析的外部符号 __imp__fprintf
  2. java String部分源码解析
  3. 前端跨域通信的几种方式
  4. zookeeper入门系列
  5. http --- 用于HTTP调试的最小型Perl Web 服务器
  6. vue --- Vue中的路由跳转问题
  7. iOS 快速实现分页界面的搭建
  8. Python并发编程之concurrent.futures
  9. Linux下进行Web服务器压力(并发)测试工具http_load、webbench、ab、Siege、autobench简单使用教程(转)...
  10. 初探ArrayList之删除