一 使用正确的姿势连接复制集
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");
浙公网安备 33010602011771号