Disk-Space-Utilization
為什麼刪除 110+ GB 的集合後,我的 /var/lib/mongodb 目錄仍然有相同的大小?
我在 MongoDB 和空間使用方面遇到了一些問題。特別是,我曾經在磁碟上擁有大約 6 億條記錄的大型集合,總計 110+ GB。最近我決定放棄它,因為數據已經過時,為此我通過 rockmongo 的 Web 界面刪除了該集合。因此,rockmongo 不再向我顯示該集合,但我的磁碟使用情況根本沒有改變。
是否有任何我不知道的干淨操作,必須執行才能將數據庫與磁碟上的數據庫文件同步?
我試圖執行“修復”,但係統抱怨磁碟上沒有足夠的空間……那是因為它全部被 MongoDB 使用。
與大多數數據庫系統一樣,刪除數據時數據庫文件不會縮小,數據只是被刪除/標記為已刪除,並且空間被重新使用。
您需要執行
db.repairDatabase()
到緊湊空間,如此處所述
雖然從技術角度來看,上述 mongodump/drop/mongorestore 方法可以正常工作,但它需要您在執行此操作時使數據庫離線,這將是一個影響服務的事件。
如果您想在不停機的情況下執行此操作並且如果您正在使用 MongoDB 副本集
$$ 1 $$,你可以這樣做:
- 選擇一個成員並在那裡停止 MongoDB(服務 mongodb 停止)。如果這是 PRIMARY,請等待另一位成員被選為 PRIMARY。
- 刪除該成員上的數據文件 (cd /var/lib/mongodb; rm *)。
- 再次重啟 MongoDB 服務(service mongodb start)。
- 等待成員重新同步到 PRIMARY (rs.status())。
- 這將僅重建所需的(較小的)數據文件。
然後對 Replica Set 中的每個其他成員重複上述步驟。
$$ 1 $$ https://docs.mongodb.org/manual/tutorial/deploy-replica-set )