MongoDB-常见问题
前言
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
MongoDB-常见问题的更多相关文章
- MongoDB副本集配置系列九:MongoDB 常见问题
What is a namespace in MongoDB? If you remove a document, does MongoDB remove it from disk? When doe ...
- mongodb常见问题
1.count统计结果错误 这是由于分布式集群正在迁移数据,它导致count结果值错误,需要使用aggregate pipeline来得到正确统计结果,例如: db.collection.aggreg ...
- mongodb 常见问题处理方法收集
问题1:非正常关闭服务或关机后 mongod服务无法正常启动 在使用中发现mongodb 的服务可能因为非正常关闭而启动不了,这时我们通过 删除data目录下的 *.lock文件,再运行下/mongo ...
- MongoDB 常见问题 - 解决找不到 mongo、mongod 命令的问题
问题背景 成功安装 MongoDB 后执行 Mongo.MongoD 显示找不到命令 解决方案 echo 'export PATH="/usr/local/opt/mongodb-commu ...
- MongoDB 常见问题 - 解决 brew services list 查看 MongoDB 服务 status 显示 error 的问题
问题背景 将 MongoDB 作为服务运行 brew services start mongodb-community@4.4 也显示运行成功了,但是查看服务列表的时候,发现 MongoDB 服务的还 ...
- .Net Core 操作 MongoDB 常见问题及解决方案
System.FormatException:"Element '_id' does not match any field or property of class XXXX." ...
- MongoDB的环境搭建及启动
MongoDB环境搭建及配置 一.环境搭建 Mac:brew install mongodb 常见问题: Error: Permission denied @ unlink_internal 解决方案 ...
- NodeJs操作MongoDB之分页功能与常见问题
NodeJs操作MongoDB之分页功能与常见问题 一,方法介绍 1,聚合操作之count count()方法可以查询统计符合条件的集合的总数 db.User.count(<query>) ...
- NodeJs操作MongoDB之多表查询($lookup)与常见问题
NodeJs操作MongoDB之多表查询($lookup)与常见问题 一,方法介绍 aggregate()方法来对数据进行聚合操作.aggregate()方法的语法如下 1 aggregate(ope ...
- 常见问题:MongoDB基础知识
常见问题:MongoDB基础知识 ·MongoDB支持哪些平台? ·MongoDB作为托管服务提供吗? ·集合(collection)与表(table)有何不同? ·如何创建数据库(database) ...
随机推荐
- MySQL复合分区
到底还是开源软件,MySQL对复合分区的支持远远没有Oracle丰富. 在MySQL 5.6版本中,只支持RANGE和LIST的子分区,且子分区的类型只能为HASH和KEY. 譬如: CREATE T ...
- java多线程--几个多线程面试题小结
自学了一段时间的多线程知识,尝试了做了几个编程题,发现想象中很简单的功能,自己真写起来要花费远超自己想象的功夫,知识点易学,不易用啊. 面试题1:编写程序实现,子线程循环10次,接着主线程循环20次, ...
- canvas 图片拖拽旋转之一——坐标转换translate
引言 对canvas中绘制的图片进行旋转操作,需要使用ctx.translate变换坐标系,将图片旋转的基点设为坐标系的原点,然后ctx.rotate旋转. 这个时候,因为canvas坐标系发生了旋转 ...
- Cesium原理篇:4Web Workers剖析(2)
What's the WebWorkers? 2008 年 W3C 制定出第一个 HTML5 草案中提出了工作线程(Web Worker)的概念,并且规范出 Web Worker 的三大主要特征:能够 ...
- Mongo查询
这里主要是讲MongoDB在控制台中如何进行高级查询. 还有一句想提醒大家,多动手实验,才是硬道理. <,>,>=,<= 这四个就不用解释了,最常用的,也是最简单的. db.c ...
- HTML基本元素(一)
HTML基本元素(一) 1.换行符 <br /> Ps:br 是换行(Break)的缩写,文本会在这个标签的地方换行. 实例: 第一行<br />第二行 2.段落 <p& ...
- .net 将List序列化成Json字符串
将List类型转化为Json,是我们平常开发时最常见的了.在使用中,有很多种方法,也可以使用. 第一种 第三方组件:Newtonsoft.Json.dll //转化成Json Newtonsoft.J ...
- 常用查找数据结构及算法(Python实现)
目录 一.基本概念 二.无序表查找 三.有序表查找 3.1 二分查找(Binary Search) 3.2 插值查找 3.3 斐波那契查找 四.线性索引查找 4.1 稠密索引 4.2 分块索引 4.3 ...
- C# 判断字符串是否是int/double
using System.Text.RegularExpressions; /// <summary> /// 判断字符串是否是int/double /// </summary> ...
- C# 特性学习之一、CallerMemberName、CallerFilePath和CallerLineNumber
在开发中经常会写个公有静态类记录日志,如下: /// <summary> /// Writes the error. /// </summary> /// <param ...