2015-09-02 26 views
1

是否有可能將mongodump和mongorestore存儲到不同的主機,使用不同的數據庫名稱並啓用oplog?MongoDB - 在不同的主機上轉儲和恢復,帶有oplog的db

來自:mongodb的://用戶:密碼@源主機名:源端口/ DB1

到:mongodb的://用戶:密碼@ DEST-主機名:DEST端口/ DB5

當我在源MongoDB上使用oplog執行mongodump時,它會轉儲整個數據庫。

mongodump --oplog --host <source-hostname> -u <user> -p <password> --port <source-port> --authenticationDatabase admin 

現在爲了恢復,我想恢復到不同的主機名,並且db-name也是不同的。有沒有辦法將數據恢復到這個數據庫,oplogReplay?

mongorestore --host <dest-host> --port <dest-port> --username <user> --password <password> --authenticationDatabase admin --oplogReplay --db <db5> <path-to-dump>/dump 

如果我使用oplogReplay,我收到以下錯誤

Can only replay oplog on full restore 

我不想做一個完全恢復,因爲它會創建數據庫名稱爲DB1,而我想利用db5。此外,目標主機上已經有多個數據庫,我不想用另一個新數據庫進行轟炸。

對此問題有何建議?

回答

2

您不能同時使用兩個選項--oplogReplay--db。 如果您不想恢復完整的數據庫,只需轉至/轉儲/文件夾並刪除除db5以外的數據庫的文件。然後重試mongorestore沒有--db

mongorestore --host <dest-host> --port <dest-port> --username <user> --password <password> --authenticationDatabase admin --oplogReplay <path-to-dump>/dump 

如果這不會不爲你工作,你可能需要收集導入OPLOG到一個臨時數據庫,並操縱它除了記錄所有刪除DB5。

+0

anhlc是正確的。我們不能在命令中使用--oplogReplay和--db運行mongorestore命令。 – bthoppae