前言:
用 pymongo 连接 mongo 副本集(Replica Set)从而读写分离以及主备切换进而解决主节点故障问题。
副本集实例 Connection String URI 连接示例
- 获取副本集实例的 Connection String URI 连接信息,详情请参考[Connection String URI]
ConnectionString 主要内容:
1 | mongodb://username:password@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/admin?replicaSet=myRepl&authSource=admin |
- replicaSet : 指定的名称副本集
- authSource: 指定与用户凭据关联的数据库名称。
authSource
默认为连接字符串中指定的数据库。
- 读写分离:
要实现读写分离,需要在 Connection String URI 的options里添加readPreference=secondaryPreferred
,设置读请求为 Secondary 节点优先。
更多读选项请参考Read preferences。
示例
1 | mongodb://username:password@dds-xxxxxxxxxxxx:3007,xxxxxxxxxxxx:3007/admin?replicaSet=mgset-xxxxxx&readPreference=secondaryPreferred |
通过以上 Connection String 来连接 MongoDB 副本集实例,读请求将优先发给 Secondary 节点实现读写分离。同时客户端会自动检测节点的主备关系,当主备关系发生变化时,自动将写操作切换到新的 Primary 节点上,以保证服务的高可用。
代码实现:
1 | def get_mongo_conn_url_replicaset(ip_port_list, user=None, pwd=None, set_name=None,set_authSource=None): |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kirio!
评论