84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
大家好,为什么mongodb存入的数据,第二天启动mongo的时候,删掉mongod.lock然后数据全没了,是什么原因?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
首先,mongod.lock是mongo服务端启动后在硬盘中创建的一个锁文件,如果你正常退出mongod服务,该文件即使还存在,也不会影响下一次启动mongod服务的。同时,这个文件还会记录mongod在运行过程中的一些状态,以便在正常重新启动服务时能够获取异常信息提示。
mongod.lock
mongo
mongod
注意:一般只有在非正常退出mongod服务时,才需要删除mongod.lock文件。正常退出,无需删除。
现在数据丢失,应该是非正常退出,即数据库崩溃,如果没有开启journal,那么就没办法保证数据的完整性了。
开启journal
所以在生产环境中一般都会开启journal。
如果数据没有备份,只能试试使用mongod内置的修复,运行mongod加上--repair选项:
--repair
mongod --dbpath /path/to/corrupt/data --repair
当正常关闭mongod时,会清除mongod.lock文件,下次启动时知道上次是完全关闭的。相反,如果lock文件没有被清除,mongod没有正常的关闭。
如果mongod检测到没有正常的关闭,不会让你再次启动,启动时会打印上次异常关闭的信息,需要你复制一份数据。然而,有些人已经意识到,可以通过删除这个lock文件来绕过这个检查。所以就有了删除这个文件的原因。在启动时删除lock文件意味着你不知道或不关心你的数据是否已经损坏。如果无法启动mongod,请修复你的数据,而不是删除lock文件。
解决办法
首先,
mongod.lock
是mongo
服务端启动后在硬盘中创建的一个锁文件,如果你正常退出mongod
服务,该文件即使还存在,也不会影响下一次启动mongod
服务的。同时,这个文件还会记录mongod在运行过程中的一些状态,以便在正常重新启动服务时能够获取异常信息提示。注意:一般只有在非正常退出
mongod
服务时,才需要删除mongod.lock
文件。正常退出,无需删除。现在数据丢失,应该是非正常退出,即数据库崩溃,如果没有
开启journal
,那么就没办法保证数据的完整性了。所以在生产环境中一般都会
开启journal
。如果数据没有备份,只能试试使用mongod内置的修复,运行
mongod
加上--repair
选项:是否要删除
mongod.lock
文件?当正常关闭mongod时,会清除mongod.lock文件,下次启动时知道上次是完全关闭的。相反,如果lock文件没有被清除,mongod没有正常的关闭。
如果mongod检测到没有正常的关闭,不会让你再次启动,启动时会打印上次异常关闭的信息,需要你复制一份数据。然而,有些人已经意识到,可以通过删除这个lock文件来绕过这个检查。所以就有了删除这个文件的原因。在启动时删除lock文件意味着你不知道或不关心你的数据是否已经损坏。如果无法启动mongod,请修复你的数据,而不是删除lock文件。