首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用monger与从实例的只读连接。

使用monger与从实例的只读连接。
EN

Stack Overflow用户
提问于 2013-01-18 13:51:49
回答 2查看 5.5K关注 0票数 2

我有一个副本集,我想建立一个独立的只读连接到一个从实例。

通常情况下,我应该不会遇到任何问题。我应该做的唯一一件事是将slaveOk=true设置为能够使用读取操作查询它。当我使用nodejs或mongo控制台时,它工作得很好,但我没有找到使用monger的方法。

最奇怪的是,当我调用set-db!函数时,我得到了一个异常:

MongoException不和主人交谈和重试耗尽了com.mongodb.DBTCPConnector.innerCall (DBTCPConnector.java:314)

建立复制集连接对我来说不是一种选择。

目前我正在使用[com.novemberain/monger "1.4.0"]

谢谢!

更新:--我查看了Java MongoDB驱动程序API文档并找到了slaveOk方法。我编写了以下代码,希望它能工作:

代码语言:javascript
复制
(defn slave-connect!
  [& args]
  (mg/set-connection!
    (doto (apply mg/connect args)
          (.slaveOk))))

但我只有一个新的例外:

MongoException not master com.mongodb.CommandResult.getException (CommandResult.java:100)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-18 15:46:39

看来我用com.mongodb.DBApiLayer文档解决了我的问题。

因此,正确的解决方案是使用ReadPreference方法将次要设置为setReadPreference,然后使用setReadOnly()方法使数据库只读:

代码语言:javascript
复制
(import 'com.mongodb.ReadPreference)

(defn use-slave-db!
  [& args]
  (mg/set-db!
    (doto (apply mg/get-db args)
          (.setReadOnly true)
          (.setReadPreference
            (ReadPreference/secondary)))))

现在,可以使用use-slave-db!函数而不是默认的use-db!宏连接到从实例。

票数 1
EN

Stack Overflow用户

发布于 2014-12-03 16:46:03

我在monger 2.0.0下也发现了以下工作:

代码语言:javascript
复制
(connect-via-uri "mongodb://host/db?readOnly=true&readPreference=secondary")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14400357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档