zoukankan      html  css  js  c++  java
  • mongodb 中data lock解决方法

    之前MongoDB启动的时候是蛮正常的,不知道后来启动报错了,就把粘贴出来查询了。最后才知道是由于自己不正常的关闭导致的这个情况。

    --摘录:MongoDB非正常关闭后修复记录

      mongod没有后台执行,在终端连接非正常断开后,再次执行mongod报错,如下所示:

    [root@localhost mongodb]# ./bin/mongod ./bin/mongod --help for help and startup options Thu Nov 17 22:42:49 Thu Nov 17 22:42:49 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability. Thu Nov 17 22:42:49 Thu Nov 17 22:42:49 [initandlisten] MongoDB starting : pid=3257 port=27017 dbpath=/data/db/ 32-bit host=localhost Thu Nov 17 22:42:49 [initandlisten] Thu Nov 17 22:42:49 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data Thu Nov 17 22:42:49 [initandlisten] **       seehttp://blog.mongodb.org/post/137788967/32-bit-limitations Thu Nov 17 22:42:49 [initandlisten] **       with --journal, the limit is lower Thu Nov 17 22:42:49 [initandlisten] Thu Nov 17 22:42:49 [initandlisten] db version v2.0.1, pdfile version 4.5 Thu Nov 17 22:42:49 [initandlisten] git version: 3a5cf0e2134a830d38d2d1aae7e88cac31bdd684 Thu Nov 17 22:42:49 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_41 Thu Nov 17 22:42:49 [initandlisten] options: {} ************** Unclean shutdown detected. Please visit http://dochub.mongodb.org/core/repair for recovery instructions. ************* Thu Nov 17 22:42:49 [initandlisten] exception in initAndListen: 12596 old lock file, terminating Thu Nov 17 22:42:49 dbexit: Thu Nov 17 22:42:49 [initandlisten] shutdown: going to close listening sockets... Thu Nov 17 22:42:49 [initandlisten] shutdown: going to flush diaglog... Thu Nov 17 22:42:49 [initandlisten] shutdown: going to close sockets... Thu Nov 17 22:42:49 [initandlisten] shutdown: waiting for fs preallocator... Thu Nov 17 22:42:49 [initandlisten] shutdown: closing all files... Thu Nov 17 22:42:49 [initandlisten] closeAllFiles() finished Thu Nov 17 22:42:49 dbexit: really exiting now

    修复方法:

    这算是一个Mongod 启动的一个常见错误,非法关闭的时候,lock 文件没有干掉,第二次启动的时候检查到有lock 文件的时候,就报这个错误了。

    解决方法:进入 mongod 上一次启动的时候指定的 data 目录  --dbpath=/data/mongodb

    删除掉该文件:

    rm /data/mongodb/mongo.lock --linux

    del /data/mongodb/mongo.lock --windows

    再执行:

     ./mongod  --repair

    启动:

    /usr/local/src/mongodb-linux-x86_64-2.0.2/bin/mongod --port=27017 --pidfilepath=/var/run/mongod.pid --dbpath=/data/mongodb --directoryperdb --nojournal --noauth

    OK,问题解决。

    正确关闭mongod 的方法:进入mongo shell

    use admin

    db.shutdownServer()

    也可以按照文档粗暴的杀掉它,它内部应该有KILL信号处理程序。

    killall mongod

    请不要 kill -9 ,会造成文件数据混乱丢失 repair 也无力回天。

    ctrl+c 可以退出mongo的界面 或是ext

    正确关闭mongodb步骤:

    最近在学习mongodb,每次shell下操作完成后直接exit退出,下次启动的时候总是报出无法连接到数据库的错误,这是因为没有正常关闭mongodb,数据库在db文件夹下生产了mongod.lock锁文件,只有删除了该锁文件才能连接到数据库。解决方法:1 use admin 2:db.shutdownServer() 3:exit,就行了。第二步操作的时候会出现一些错误信息,可以忽略掉

  • 相关阅读:
    学习完java基础,总结的一些东西,希望大佬们茶余饭后看看,如有错误还请指正
    JDK和JRE的简单概述
    堆排序
    mybatis的一级缓存
    重用执行器和批处理执行器
    JDBC statement和mybatis mapper statement
    深入浅出Mybatis技术原理与实战(杨开振)(带详细书签) PDF 下载 高清 完整版+源码
    mybatis执行器1
    mybatis执行器1---简单描述JDBC
    JDBC不再需要Class.forName()来显式加载jdbc驱动
  • 原文地址:https://www.cnblogs.com/shininguang/p/5253306.html
Copyright © 2011-2022 走看看