MongoDB-常见问题

news/2025/2/9 2:00:45

前言

       MongoDB数据库的版本为3.0.7。记录在使用MongoDB数据库时遇到的各种问题,目前是遇到一个整理一个,没有进行分类,等整理较多的时候,进行分类整理一下。

1.使用可视化工具连接时,身份验证失败,Authorization failed

       当使用MongoVUE或者Robomongo连接数据库时,验证失败。

解决办法

(1)首先,关闭集群服务器,以非身份验证启动集群

(2)然后,登陆一个mongos和每个分片服务器,修改admin数据库下的system.version集合,原先为{"currentVersion" : 5}。db.system.version.update({ "_id" : "authSchema"},{$set: {"currentVersion" : 3} })

(3)最后,在修改版本后重新建立所有用户,重新启动集群并加上身份验证即可。

原因

       这和MongDB的验证机制有关,3.0开始默认使用的验证模式为SCRAM-SHA-1(currentVersion=5),2.6以前使用的是MONGODB-CR(MongoDB Challenge and Response) (currentVersion=3)验证方式。

       3.0的bug:https://jira.mongodb.org/browse/SERVER-17459

2.集群分片失败

有以下几个原因:

(1)保证服务器端口都通,关闭防火墙吧,systemctl stop firewalld

(2)保证服务器时间最好差小于30秒

date -s '05/24/2016 15:27:05'      ntpdate –u x.x.x.x

(3)数据量太少没达到分片要求

3.TTL索引失效

有以下几个原因:

(1)保证建TTL索引的字段是日期类型,若用数组,保证数组包含日期类型的数据

(2)建立索引时使用expireAfterSeconds全拼,不能缩写如下

db.coll.ensureIndex({"ttlkey":1},{"expireAfterSeconds":60*60*12}) 过期时间为 12h

4.怎么关闭集群

       按照mongos-config-shard的顺序关闭集群,登录相应的数据库,选择admin数据库,使用db.shutdownServer()关闭服务。

       如果启用了身份验证,切记启用前就创建了admin用户,不只是mongos创建,各分片服务器也要创建。

5.mongod服务启动失败

有以下几个原因:

(1)确定数据目录是否存在

(2)查看--dbpath 目录下的mongod.lock文件,此文件大小若不是0,表示上次是非正常退出数据库,此时有两种方法,一是直接删除此文件,二是修复数据库(repair database)

6.mongod服务启动时警告信息

(1)WARNING: You are running on a NUMA machine.

       这是由多核CPU引起的,解决办法是进入mongodb安装目录的bin目录,使用numactl --interleave=all ./mongod 启动mongod服务

(2)WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
       WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.

       使用以下命令直接关闭即可:

       # echo never >/sys/kernel/mm/transparent_hugepage/enabled
       # echo never >/sys/kernel/mm/transparent_hugepage/defrag

 

转载于:https://www.cnblogs.com/cwane/p/5526662.html


http://www.niftyadmin.cn/n/3745527.html

相关文章

Ubuntu 16.04修复PDF默认使用ImageMagick打开无法设置其它默认的问题(默认打开程序设置)...

打开:~/.config/mimeapps.list 去掉以下几项: image/pdfdisplay-im6.desktop image/pdfdisplay-im6.q16.desktop;display-im6.desktop; 通过设置以上即可解决问题,再次在PDF文件属性上设置其它为默认打开程序即可。 其它配置文件说明&#xf…

C++学习笔记13--异常处理

异常处理 什么是异常:不常发生但无法避免。 返回错误码 设置errno全局变量 抛出异常 捕获异常: 用Try{}把可能发生异常的代码包起来紧跟其后用若干个(至少一个)catch(类型 e){}来捕获指定类型的异常并处理,处理后程序从…

文字向下对齐

使用 align-items 一:这是元素位于容器的结尾。 display:flex;align-items:flex-end;二:这是元素位于容器的基线上。 display:flex;align-items:baseline;小hint: | stretch | 默认值。元素被拉伸以适应容器。| |-center-|-元素位于容器的中心…

String,StringBuilder性能对照

import java.util.Date;import java.util.UUID;/*** 測试String,StringBuilder性能,推断什么时候改用String,什么时候该用StringBuilder* 測试结果* String 拼接測试,測试长度10000,測试字符串数组长度30,完毕时间721 StringBuilder 拼接測试,測试长度10000,測…

微信小程序图片设置超出隐藏

.icon-yishiyong {overflow: hidden;opacity: 0.6;font-size: 185rpx !important;z-index: 0;margin-top: -95rpx !important;margin-left: 274rpx;color: #d3d3d2 !important; }原因:(加上overflow: hidden;) overflow: hidden;| visible |…

最小生成树: HDU1233还是畅通工程

还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 47015 Accepted Submission(s): 21448Problem Description某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅…

Ubuntu Android 开发(一) JDK 安装

2019独角兽企业重金招聘Python工程师标准>>> 关于什么是Android,点击链接 由于Android 官方推荐使用Java 开发Android 程序,那么在Ubuntu 开发Android 安装Jdk 是必不可少的了。那么也有一些人问了,用C/C 不可以吗? 那么这个问题请安装NDK …

小程序--子页面触发父页面的方法

父页面创建一个方法: pop(){this.setData({console.log(点击了我)})},子页面: (方法名为pop–自定义的) 我的这个是在本页面的基础上弹出弹框,所以 pages[pages.length - 1]; 如果需要返回上一个页面就 pages[pages.le…