問題: 開發伺服器mongodb資料檔案太大。占用近80g,其中某個db占用最大(運營環境這個db的資料只有3g大小)
分析: 開發環境有大量測試的 增加/刪除/修改 操作, 長期以來會導致資料檔案非常大,但 實際儲存資料並不是很多.
129m db_name.1
2.1g db_name.10
2.1g db_name.11
2.1g db_name.12
2.1g db_name.13
2.1g db_name.14
2.1g db_name.15
2.1g db_name.16
2.1g db_name.17
2.1g db_name.18
2.1g db_name.19
257m db_name.2
2.1g db_name.20
2.1g db_name.21
2.1g db_name.22
2.1g db_name.23
2.1g db_name.24
2.1g db_name.25
2.1g db_name.26
2.1g db_name.27
2.1g db_name.28
2.1g db_name.29
513m db_name.3
2.1g db_name.30
2.1g db_name.31
操作:a) 刪除許多開發測試資料後(db.collection.remove()),資料檔案顯然是不會變小的.
b) /usr/local/mongodb-new/bin/mongodump --db mydb --host 127.0.0.1 --port=27017 -uadmin -p123
c) 關閉mongodb
d) cd /data/mongodb/ ; rm db_name.*
e) 啟動mongodb;啟動後登陸mongo 確認原來的mongo庫已被刪除(正常情況下show dbs已經看不到原來的資料庫) ; use db_name;db.adduser('admin','123');
f) /usr/local/mongodb-new/bin/mongorestore --db mydb --host=127.0.0.1 --port=27017 -uadmin -p123 dump/mydb/
結果:**後mongodb資料檔案如下:
65m db_name.0
129m db_name.1
257m db_name.2
513m db_name.3
> show dbs;
db_name 1.953125gb
壓縮 MongoDB 的資料檔案
mongodb採用了磁碟空間預分配的機制,為了避免磁碟碎片以及使用mmap後造成的近一步的記憶體碎片,但是隨著資料的增刪除改操作,資料檔案不可避免的會產生空洞,造成磁碟空間和記憶體的浪費。本文說的是這方面的壓縮,資料使用某些壓縮演算法進行壓縮的討論不在此範圍。在mongodb 中,大概有兩種方法可以...
MongoDB資料檔案備份與恢復
mongodb資料檔案備份與恢復 備份與恢復資料對於管理任何資料儲存系統來說都是非常重要的。1 冷備份與恢復 建立資料檔案的副本 前提是要停止mongodb伺服器 也就是直接copy mongodb將所有資料都儲存在資料目錄下,預設是 data db windows下是c data db 啟動mon...
mongodb資料檔案格式 二
mongodb資料檔案格式 本文適合於對mongodb有一定了解的朋友 閱讀。mongodb的資料檔案存在dbpath選項指定的目錄裡。每個庫 database 都有一系列的檔案 dbname.ns,dbname.0,dbname.1,資料檔案也叫pdfile,意思是portable data fi...