存档

文章标签 ‘MongoDB’

升级 MongoDB

2022年6月11日 没有评论

一直以来,衣服自己洗都意味升级 MongoDB 的升级,就是从官网下载最新的 zip 包,然后解压缩覆盖同名文件即可。

这次发现官网上已经有 5.x 的版本了,替换后报错,检查日志发现了下面的提示信息:

Invalid value for featureCompatibilityVersiondocument in admin.system.version, found 4.2, expected ‘4.4’ or ‘4.9’ or ‘5.0

经过搜索发现了官网的帮助文档,还需要修改配置。

在升级前,先连接和访问 admin 数据库,在 shell 里运行下面的命令

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

检查其返回值里是否包含和 MongoDB 实际版本号一致,我这里当前的版本是 4.4,如果不一致,那么需要运行下面的命令修改

db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )

接下来,再用最新的版本来覆盖。等待 MongoDB 启动后,再次运行上面的设置命令为实际版本号,本次最新的版本号是5.0,所以就需要设置为 “5.0”,方便下一次升级。

需要注意的是:

1、尽量逐版本升级上来,不要跨越太大的版本区间。

2、操作前请及时备份数据。

分类: 日常 标签:

Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1

2017年9月22日 没有评论

最近在写一个数据清洗工具,以调整MongoDB的数据内容。工具使用了MongoDB官方提供的Nuget包,但是在连接的时候,一直无法成功,总是连接超时报Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1异常。

后来在Stackoverflow上找到解决方法,原来问题出在连接字符串上。

原来我的连接字符串是:mongodb://username:password@ip/mydb,就出现 Unable to authenticate using sasl protocol mechanism SCRAM-SHA-1 异常。在官网的文档里有一句话 Above, the database by the name of “mydb” is where the credentials are stored for the application.

原来连接字符串里要写存储授权信息的数据库名称,默认是为admin。所以在连接字符串里不需要提供数据库名称了。在后面可以通过 var db = client.GetDatabase(“dbname”); 来定位到需要操作的数据库上。

 

分类: 一句话, 日常 标签:

mongodump 备份数据

2017年8月21日 没有评论

Mongodump 是MongoDB里的一个工具,可以用来备份数据。

我们在命令行里输入 mongodump –help 即可查看其用法,对于日常使用来说,主要会用到下面一些参数:

-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明collection的名字
-o:指明到要导出的文件名
-q:指明导出数据的过滤条件

例如:mongodump -h 127.0.0.1 -d mm-o data.dmp

但是在MongoDB采用了version 3版本身份认证的服务器上,这个方式会失败。经过查询后发现,还需要添加–authenticationDatabase admin 参数。

分类: 一句话, 日常 标签: