2012-08-29 142 views
2

我有一個雙成員副本集,我不小心刪除了集合中的所有文檔,我不知道我是如何做到這一點,但它沒有了。 是否有可能獲取所有數據?mongodb恢復刪除記錄

回答

4

除非你有一個backup(總是推薦這種類型的東西),或者其中一個副本使用slavedelay,那麼恐怕刪除記錄是最終的。如果在下一次fsync到磁盤之前殺死進程(類似地,如果在複製刪除之前打破複製),您可能已經能夠及時強制關閉以將數據保存在磁盤上,但即使這樣也會非常棘手。

+0

我有一個mac的時間機器備份,但我不能簡單地複製它,因爲一些集合是過時的。是否有可能只恢復一個集合?在db目錄下,有db-0,db-1,db-2和db-ns文件。謝謝 – Jensen

+0

是的 - 如果您可以訪問數據文件或將它們複製到其他地方,那麼您可以使用mongodump直接使用--dbpath查詢文件 - 不需要運行mongod進程來執行此操作。然後按照這裏的指示轉儲出一個特定的集合:http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-Example%3ADumpingaSingleCollection –

+0

您也可以採取複製舊的路線文件,啓動一個單獨的獨立mongod(不同端口,無replSet參數)進程,並將其作爲其dbpath指向舊數據。然後,您可以從該獨立的mongod –