大家好,為什麼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檔案。