让mongodb的secondary支持读操作
来源:互联网 发布:nat穿透软件 编辑:程序博客网 时间:2024/06/04 19:43
对于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进入实例的时候,查询仍然会报错,为此可以通过下列方式
增加一行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>
解决的办法很多。
第一种方法:在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>
--本篇文章转自:http://wengzhijuan12.blog.163.com/blog/static/3622414520137104257376/
0 0
- 让mongodb的secondary支持读操作
- MongoDB 让secondary支持读操作
- Mongodb在replicaset的secondary上补建索引
- MongoDb 的Python支持
- MongoDB 支持的数据类型
- 让你的VB6.0支持滚轮操作
- 让ThinkPHP3.2.3 支持对Oracle LOB数据的操作
- 让你的HpSocket Pull支持同步(应答式)操作
- VimFx,让firefox支持类Vim编辑器的快捷操作
- mongodb-erlang driver Replica Set Secondary节点分配不均衡的问题
- Secondary NameNode的作用
- MongoDB副本集Primary-Secondary切换实验
- MongoDB Secondary同步慢问题分析
- MongoDB:mongodb的索引操作
- MongoDB:mongodb的索引操作
- 让RDF支持BLOB:支持BLOB操作的Jena框架扩展——JenaBLOB
- 让node.js高效操作mongodb
- mongoose - 让node.js高效操作mongodb
- HDU 2091 空心三角形
- Servlet 安全方法
- 面试算法题目
- 编写自己的Shell解释器
- What is DMA and what does it do?
- 让mongodb的secondary支持读操作
- Android开发,你应该知道的学习资源
- Zigbee通讯之开发篇(基于TI 的Z-Stack)
- 【Struts2五】ValueStack以及ognl表达式一(概述)
- Ubuntu增加虚拟内存(swap分区)
- 【VC++游戏开发】智力游戏——鸡蛋里挑骨头(仿扫雷)
- OpenCV读取XML/YML文件的方法
- 日经社説 20150716 合意形成力の低下示した採決
- Qt浅谈之二十九Qt多线程