mongo connections url string 的问题
摘要
driver 连接Mongo DB的url其实很简单,就是几个变量拼接成一个url,和关系型数据库没什么不同。但是因为mongo有单个instance和replicaSet不同的部署策略,还有mongo 节点有主从之分。所以配置参数容易混淆。另外Mongo NodeJs Driver版本不同,居然也会有坑。这里作个简单介绍
正文
mongo client 连接到db字符串
格式:
mongodb://username:password@host1,host2:27017/?replicaSet=rs1&write=1&readPreference=secondaryPreferred&connectTimeoutMS=300000
username
当DB enable auth后,需要用户名和密码就加上username:password。
replicaSet
单个 mongo db instance
不用填replicaSet
replica set
这边考虑加上多个host,防止某个host down了。客户端连接不上。replicaSet 参数看起来很奇怪,为什么DB 是单个instance还是个replicat set,要让应用程序知道呢。
但是目前mongo就是这么设计的,如果提供的是多个host 列表,那么没有replicaSet参数也可以,但是如果本身环境是replica set,而你只填写了一个host,并且没有replicaSet 参数,那么会将这个Mongo DB当做是一个standalone的db instance,不清楚它是一个集群环境。
host
坑1
这边的host,填ip,还是hostname。正确的做法就是填写在rs.status()中看到的members.host的配置。
之前将这个值配置成hostname。client端连接使用ip.在mongo nodejs driver 2.1.21中可以正常工作。但是将版本升级到了2.2.24.居然读不到了。后来将rs.status()中的host改成ip,才可以访问
cannot find the primary node
坑2
replica set 有primary 和secondary节点区分,但每个节点都就有其他节点的信息。所以host变量应该填primary node,还是secondary都可以。但是只给定secondary节点时在NodeJs driver的有些版本里面无法正常连接。
write,read
write,read 一致性设置。
cassandra 的consistency level设置是可以在单个query,insert的操作中去设置的。mongo貌似还没有看到在单个操作层面的一致性设置,只是在这边的数据库连接看到有设置
参考
https://docs.mongodb.com/manual/reference/connection-string/
mongo connections url string 的问题的更多相关文章
- 详解 SWT 中的 Browser.setUrl(String url, String postData, String[] headers) 的用法
http://hi.baidu.com/matrix286/item/b9e88b28b90707c9ddf69a6e ———————————————————————————————————————— ...
- Getting SharePoint objects (spweb, splist, splistitem) from url string
You basically get anything in the object model with one full url: //here is the site for the url usi ...
- DeprecationWarning: current URL string parser is deprecated解决方法
我最近在使用mongoDB的时候,发现了这个警告语句,纳闷了,按照官方文档的教程去连接数据库还能出错,也是醉了. 后来尝试去阅读相关资料,发现只是需要将{ useNewUrlParser: true ...
- 关于nodejs DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
const mongoose = require('mongoose') mongoose.connect("mongodb://localhost:27017/study", { ...
- go语言打造个人博客系统(一)
go语言打造个人博客系统(一) 为什么选择go语言? 听说go语言是在几年前,但真正深入了解他却是在2017年,因为当时作为讲师 ,需要准备go语言的课程,结果稍一接触立刻就喜欢上这门语言了,作为 ...
- URL与String转换
NSString *str = @"www.baidu.com"; NSURL *URL = [NSURL URLWithString:str]; //string>url ...
- spring-boot支持双数据源mysql+mongo
这里,首先想说的是,现在的web应用,处理的数据对象,有结构化的,也有非结构化的.同时存在.但是在spring-boot操作数据库的时候,若是在properties文件中配置数据源的信息,通过默认配置 ...
- MongoDB源码分析——mongo与JavaScript交互
mongo与JavaScript交互 源码版本为MongoDB 2.6分支 之前已经说过mongo是MongoDB提供的一个执行JavaScript脚本的客户端工具,执行js其实就是一个js和 ...
- cas的url中去掉jsessionid
Servlet3.0规范中的<tracking-mode>允许你定义JSESSIONID是存储在cookie中还是URL参数中.如果会话ID存储在URL中,那么它可能会被无意的存储 在多个 ...
随机推荐
- 《javascript语言精粹》读书笔记 Item1 精华与语法
第一章 精华 任何语言都有其精华的部分和鸡肋的部分,javascript也不例外,而且鸡肋的部分还很多.但javascript的流行却不受他的质量影响. javascript为何如此流行?因为他是we ...
- 你不知道的JavaScript--Item4 基本类型和基本包装类型(引用类型)
1.基本类型和引用类型 基本的数据类型有5个:undefined,boolean,number,string,null typeof null; //"object" typeof ...
- 关于 行高lineheight的概念及与Vertical-align、内容框、基线等的关系
1.关于行高 行高:顾名思意指一行文字的高度.具体来说是指两行文字间基线之间的距离,他也是底线和顶线之间距离 (1)内容区
- 关于基线baseline及与inline-block、vertical-aline等属性的关系(完善中.......)
1. 基本含义 基线(base line):而是英文字母x的下端沿,是a,c,z,x等字母的底边线,并不是汉字文字的下端沿,.下图的红色线即为基线.凡是涉及到垂直方向的排版或者对齐的,都离不开最最基本 ...
- Django+Bootstrap+Mysql 搭建个人博客 (六)
6.1.comments插件 (1)安装 pip install django-contrib-comments (02)settings INSTALLED_APPS = [ 'django.con ...
- upload.go
package api import ( "os" "bytes" "mime/multipart" &qu ...
- 【bzoj2432】【NOI2011】兔农
题目描述 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到隔壁的小 朋友在讨论兔子繁殖的问题. 问题是这样的:第一个月初有一对刚出生的小兔子,经过两个月长大后,这 对兔子从第三个月开始,每个 ...
- 安装VMware错误,Microsoft Runtime DLL 安装程序未能完成安装
安装VMware-workstation-full-12.5.6-5528349, 出现如下错误: 这时候,要注意了,不要点击"确认",如果手快点击了,没关系再次运行VMware安 ...
- 关于Python元祖,列表,字典,集合的比较
定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'], ...
- 电梯调度设计之初感想——蔡迎盈&&曹玉松
突然拿到这个问题,蒙了好久,索性走一步,再走一步好了,希望在这天下第一庄里,会看到晴空. 查了好多资料,终于还是整理出一个很草稿的版本,这只能算是我们初步的设计. 四部电梯载重和乘客限制不同, ...