使用MongoDB进行不正常关机会导致mongod.lock文件损坏

时间:2015-06-16 18:13:10

标签: node.js mongodb

我有一个MongoDB数据库存储特定目录中的数据,我使用Node.js进程写入它。有时我的Node.js进程会遇到强制关闭(注意被动语态),我收到此错误消息,这意味着我必须进入并简单地删除.lock文件:

2015-06-16T11:09:19.004-0700 W -        [initandlisten] Detected unclean shutdown - /Users/amills001c/mongodb_sc_admin_dev_data/mongod.lock is not empty.
2015-06-16T11:09:19.013-0700 I STORAGE  [initandlisten] **************
old lock file: /Users/amills001c/mongodb_sc_admin_dev_data/mongod.lock.  probably means unclean shutdown,
but there are no journal files to recover.
this is likely human error or filesystem corruption.

防止这种情况发生的最佳方法是什么,所以每次启动数据库时我都不必进入并删除mongod.lock文件?

这样的东西?

   process.on('SIGINT', function (msg1,msg2) {
        mongoose.disconnect();
        mongoose.connection.close(function (msg) {
            console.log(msg);
        });
        console.log('SIGINT message:',msg1,msg2)
    });

1 个答案:

答案 0 :(得分:1)

与MongoDB的客户端连接不会影响mongod.lock文件。错误消息与您的数据库服务器有关,即mongod进程不正常地关闭。解决方案是始终干净地关闭数据库进程。

不洁净关闭应该是一种特殊情况,不会发生在您的控制之外。如果反复发生这种情况,那么您运行和管理mongod流程的方式就会出现问题。请检查为什么发生了不正常的关机并解决了这个原因。

也就是说,您在问题中提出的客户端代码绝对是一个很好的做法。在退出时关闭与DB的连接是可取的。请也这样做。但是,它与您看到的mongod.lock错误消息无关。这纯粹是在数据库服务器端。