2015-02-09 77 views
2

執行copyDb()命令時mongodb被中斷。當我要重新啓動我得到:如何在中斷後在mongodb中重新啓動/恢復copydb()?

db.runCommand({ copydb: 1, fromhost: "<ip>", fromdb: "<collection>", todb: "<db>", slaveOk: true }); 
{ 
    "ok" : 0, 
    "errmsg" : "failed to create collection \"<db>.<collection>\": collection already exists" 
} 

有沒有辦法中斷後恢復數據庫的副本或做我需要刪除數據庫,並從頭開始? (不是一個好的選擇,因爲副本需要大約10天,並且已經運行了2天)。

回答

2

簡短的回答是否定的,沒有內置的方式來恢復操作,它基本上要求/假定在操作期間兩端100%可用性。要重新使用copydb命令,您必須刪除目標數據庫並從頭開始重新啓動該副本。

除了自己編寫一些東西(這總是一個選項),我所知道的唯一一個工具可以提供接近於簡歷的東西,它是hydra,在這種情況下,該功能僅用於提取來自幾乎完整副本的少量散兵隊員。

另一個潛在的選擇是使用MMS Backup(完全公開:我目前爲MongoDB工作,它提供MMS備份作爲付費服務),它將爲備份的數據庫創建數據的定期快照,包括索引。這些快照然後可以用於通過簡單的下載/傳輸來恢復到其他節點,而不是依賴於複製命令。