我有一個5GB的數據庫,我想要緊湊和修復。不幸的是,我有一個在該數據庫上運行的活動應用程序mongod - 修復仍然是MongoDB 1.8中的阻塞任務嗎?
我在想如果在MongoDB 1.8上運行mongod --repair
任務會阻塞數據庫上的所有其他寫入操作。
我不想關閉整個應用程序數小時...
我有一個5GB的數據庫,我想要緊湊和修復。不幸的是,我有一個在該數據庫上運行的活動應用程序mongod - 修復仍然是MongoDB 1.8中的阻塞任務嗎?
我在想如果在MongoDB 1.8上運行mongod --repair
任務會阻塞數據庫上的所有其他寫入操作。
我不想關閉整個應用程序數小時...
是,repairDatabase
是一個阻塞操作,這意味着你將需要一個計劃的維護窗口中做到這一點。
或者,如果您正在使用副本集,可以通過從副本集中取出一個成員,修復副本,將其重新添加到副本集並重復,直到所有副本都被修復。有關更多信息和注意事項,請參閱the note in yellow at the end of this section。
您可以查看--journal鍵。它保留了上次操作的二進制日誌,恢復可能比修復花費的時間少得多。
當您不想保留額外的副本集並希望在Amazon AWS上擁有良好的備份時,它也可用。它允許在沒有任何影響的情況下從工作的mongo執行EBS快照 – varela
我還應該注意,您可以在mongo shell中使用'db.repairDatabase()'執行修復,而不僅使用'--repair'命令行標誌進行修復。但是,這仍然是阻塞操作,只是調用它的一種不同方式。 – dcrosta