suchen

Heim  >  Fragen und Antworten  >  Hauptteil

mongodb

大家好,为什么mongodb存入的数据,第二天启动mongo的时候,删掉mongod.lock然后数据全没了,是什么原因?

高洛峰高洛峰2773 Tage vor611

Antworte allen(1)Ich werde antworten

  • 黄舟

    黄舟2017-04-27 09:04:59

    解决办法

    首先,mongod.lockmongo服务端启动后在硬盘中创建的一个锁文件,如果你正常退出mongod服务,该文件即使还存在,也不会影响下一次启动mongod服务的。同时,这个文件还会记录mongod在运行过程中的一些状态,以便在正常重新启动服务时能够获取异常信息提示。

    注意:一般只有在非正常退出mongod服务时,才需要删除mongod.lock文件。正常退出,无需删除。

    现在数据丢失,应该是非正常退出,即数据库崩溃,如果没有开启journal,那么就没办法保证数据的完整性了。

    所以在生产环境中一般都会开启journal

    如果数据没有备份,只能试试使用mongod内置的修复,运行mongod加上--repair选项:

    mongod --dbpath /path/to/corrupt/data --repair
    

    是否要删除mongod.lock文件?

    当正常关闭mongod时,会清除mongod.lock文件,下次启动时知道上次是完全关闭的。相反,如果lock文件没有被清除,mongod没有正常的关闭。

    如果mongod检测到没有正常的关闭,不会让你再次启动,启动时会打印上次异常关闭的信息,需要你复制一份数据。然而,有些人已经意识到,可以通过删除这个lock文件来绕过这个检查。所以就有了删除这个文件的原因。在启动时删除lock文件意味着你不知道或不关心你的数据是否已经损坏。如果无法启动mongod,请修复你的数据,而不是删除lock文件。

    Antwort
    0
  • StornierenAntwort