zoukankan      html  css  js  c++  java
  • 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

     

    作 者:创心coder
    QQ群:361982568
    订阅号:cxcoder
    文章不足之处,还请谅解!本文会不断完善更新,转载请保留出处。如果帮到了您,烦请点赞,以资鼓励。
  • 相关阅读:
    PHP学习笔记:APACHE配置虚拟目录、一个站点使用多域名配置方式
    转载:分页原理+分页代码+分页类制作
    PHP学习笔记:数据库学习心得
    PHP学习笔记:用mysqli连接数据库
    PHP学习笔记:MySQL数据库的操纵
    PHP学习笔记:利用时间和mt_rand函数获取随机名字
    PHP学习笔记:等比例缩放图片
    前端学习(一) html介绍和head标签
    Python 协程
    Python 线程----线程方法,线程事件,线程队列,线程池,GIL锁,协程,Greenlet
  • 原文地址:https://www.cnblogs.com/cwane/p/5526662.html
Copyright © 2011-2022 走看看