mongoDB數據庫的修復


mongoDB數據庫的修復

標簽: 數據庫mongodbdatabasefile文檔
 分類:
查看mongodb.log日志,發現日志里有以下語句:
..............
Mon Mar  317:46:37 [conn148] Assertion: 10295:getFile(): bad file number value (corrupt db?): run repair

..............

com.MongoDB.MongoException: bad offset:0 accessing file: /data/dbdata/db.0 - consider repairing database

 

翻譯 為: 聲明: getFile():錯誤的文件數值(損壞的數據庫?):運行修復

查了查mongodb的文檔,遂用以下方法進程修復:

首先停止mongod服務,刪除 mongodb.log,也可以備份一下
# rm -rf  /data/mongodb/mongodb.log

刪除mongodb進程文件
# rm -rf  /mongodb/mongod.lock

進行修復

# /usr/local/mongodb/bin/mongod --repair --dbpath /mongodb/ --repairpath /mongodb/repair/

如果后台執行

./mongod --repair --dbpath /data/dbdata --repairpath /data/repair/ --logpath /data/dblog/mongodbrepair.log --fork


這時mongodb進程會在/mongodb/repair/ 目錄下儲存臨時的修復數據庫文件,文件目錄為“$tmp_repairDatabase_0”所以此目錄空間要足夠大。
生產環境數據庫為100G,修復進行了大約3個半小時,在“/mongodb/repair/$tmp_repairDatabase_0"目錄下產生了近30G的數據庫臨時文件,修復完成后數據庫臨時文件自動清除。

之后開啟mongod服務,檢查數據庫,發現讀寫正常,mongodb.log沒有出現錯誤。修復OK!

原理是:把數據重新讀一遍,然后寫到另一個庫中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM