【问题标题】:How to achieve a read only connection using pymongo如何使用pymongo实现只读连接
【发布时间】:2017-06-02 08:30:11
【问题描述】:

如何实现对MongoDB从节点的只读连接。 我有一个主节点和两个辅助节点。我想要一个到辅助节点的只读连接。

我尝试了MongoReplicaSetClient,但没有得到我想要的。 是否可以与主节点建立只读连接?

【问题讨论】:

  • 只读到主要还是次要?
  • @Astro 只读到次要
  • 默认情况下,辅助是只读的。但是,您可以指定从辅助读取的读取首选项。默认情况下,它从主节点读取。
  • 是的,在连接字符串中使用 readPreference=secondary
  • 将被写入主节点

标签: python mongodb pymongo


【解决方案1】:

您需要在查询中指定Read PreferenceSecondary Preferred 的读取首选项会将查询发送到辅助节点,但如果辅助节点不可用,则会回退到主节点。

pymongo 中的读取首选项在 MongoClient 中配置:

>>> client = MongoClient(
...     'localhost:27017',
...     replicaSet='foo',
...     readPreference='secondaryPreferred')
>>> client.read_preference
SecondaryPreferred(tag_sets=None)

更多信息(和以上来源)可以找到here.

【讨论】:

  • 从只读的角度来看,指定readPreference='secondary'可能更安全。
  • 在我的实践中,readPreference 只影响你阅读的位置,它并不禁止你写到主数据库,所以,我仍然可以在 mongodb 中更新我的收藏。
【解决方案2】:

Secondary 默认是只读的。但是,您可以指定从辅助节点读取的读取首选项。默认情况下,它从主节点读取。

这可以在连接字符串中使用 readPreference=secondary 来实现

【讨论】:

    猜你喜欢
    • 2020-07-12
    • 2021-07-03
    • 2017-02-17
    • 2023-03-25
    • 2022-12-18
    • 2011-04-24
    • 1970-01-01
    • 2017-07-31
    • 2015-07-01
    相关资源
    最近更新 更多