2016-11-30 226 views
4

有沒有辦法重新生成丟失的WiredTiger.wt?我們的MongoDB實例停止工作(奇怪),並且該文件從dbpath文件夾中丟失 - 看起來像這種行爲是known恢復丟失的WiredTiger.wt

BTW,該修復工具不會成功:

file:WiredTiger.wt, connection: .//WiredTiger.wt: handle-open: open: No such file or directory 

失去數據庫是很難的胃......

任何想法?謝謝。

P.S.我們仍然得到了所有其他.wt文件。

+0

你有''dbPath'的舊備份還是這是你的數據的唯一副本? WiredTiger.wt文件包含必要的元數據,不能重新創建。您使用的是什麼特定版本的MongoDB? – Stennie

+0

這就是整個問題,我們沒有任何備份,因爲這個項目是全新的......我們沒有打擾,但是,你生活和學習,是吧? :)(v3.2.10) – Moez

+0

非常不幸的教訓,但希望新的項目意味着你沒有失去太多的數據。如果您絕望,可能會使用WiredTiger命令行工具從集合中轉儲某些數據(但是很痛苦),但是這種方式會導致英雄般的不受支持的路徑。對於具有關鍵數據的生產環境,我建議使用連續備份服務(例如MongoDB Cloud Manager)並將其部署爲副本集。 – Stennie

回答

1

WiredTiger.wt文件包含有關MongoDB數據目錄的基本元數據:存在哪些集合&以及每個文件中的最新檢查點。如果WiredTiger.wt已從您的中完全刪除,那麼目前沒有用於重新創建此元數據的過程或工具,但還沒有從備份副本恢復完整。雖然您確實有數據文件,但您不幸丟失了描述這些文件所含內容以及它們之間關係的目錄。

+0

我在本地遇到過這個問題(另一次我失去了數據庫,因爲另一個錯誤,在一個乾淨的shotdown後)。我非常擔心這些問題繼續生產。如果我知道它之前我會完全放棄postgres甚至MySQL的MongoDB。 – alfredopacino

+0

@alfredopacino刪除數據文件不是預期的(或常見的)問題,但無論您的數據庫如何,您都應該爲重要數據提供備份策略。如果沒有你遇到的MongoDB錯誤的上下文,很難知道是否有可能採取的步驟來改進你的部署或管理實踐(並且與這裏的問題「我可以重新創建缺少的WiredTiger.wt文件嗎?」無關) 。某些部署方法(例如Docker)或文件系統(NFS)的使用在性能或潛在的文件損壞方面可能會更成問題。 – Stennie

+0

值得回顧一下[生產筆記](https://docs.mongodb.com/manual/administration/production-notes/)以瞭解可能適用的建議設置,但對於有關MongoDB部署的更多討論(而不是具體問題)我會建議發佈在[mongodb用戶組](https://groups.google.com/forum/#!forum/mongodb-user)上。 – Stennie