hangkk2008

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一 使用正确的姿势连接复制集

MongoDB复制集里Primary节点是不固定的,不固定的,不固定的,重要的事情说3遍
所以生产环境千万不要直连Primary,千万不要直连Primary,千万不要直连Primary。

要正确连接复制集,需要先了解下MongoDB的Connection String URI,所有官方的driver都支持以Connection String的方式来连接MongoDB。
下面就是Connection String包含的主要内容
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

mongodb://          前缀,代表这是一个Connection String
username:password@  如果启用了鉴权,需要指定用户密码
hostX:portX         复制集成员的ip:port信息,多个成员以逗号分割
/database           鉴权时,用户帐号所属的数据库
?options            指定额外的连接选项
replicaSet 连接的复制集名称

通过正确的Connection String来连接MongoDB复制集时,客户端会自动检测复制集的主备关系,当主备关系发生变化时,自动将写切换到新的主上,以保证服务的高可用。

常用连接参数
1.如何实现读写分离?
在options里添加readPreference=secondaryPreferred即可实现,读请求优先到Secondary节点,从而实现读写分离的功能,更多读选项参考Read preferences
2.如何限制连接数?
在options里添加maxPoolSize=xx即可将客户端连接池限制在xx以内。
3.如何保证数据写入到大多数节点后才返回?
在options里添加w= majority即可保证写请求成功写入大多数节点才向客户端确认,更多写选项参考Write Concern

二 各种语言连接方式

1. python 连接方式

安装包: pip install pymongo

import pymongo

# 添加连接数限制
client=pymongo.MongoClient("mongodb://admin:123@192.168.232.132:27090,192.168.232.133:27090,192.168.232.134:27090/admin?replicaSet=testrs;maxPoolSize=100")
db = client.school
print db.name
#print db.student.find_one()

for i in db.student.find().limit(10):
    print i["name"]

 2.java 连接方式

MongoClientURI connectionString = new MongoClientURI("mongodb://root:****@dds-bp114e3f1fc441342.mongodb.rds.aliyuncs.com:3717,dds-bp114e3f1fc441341.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-677201"); // ****替换为root密码
MongoClient client = new MongoClient(connectionString);
MongoDatabase database = client.getDatabase("mydb");
MongoCollection collection = database.getCollection("mycoll");

 

posted on 2019-04-21 18:02  鱼儿也疯狂  阅读(171)  评论(0)    收藏  举报