mongodb被鎖定 --repair

緣由:mongodb不正常關閉形成的mongodb被鎖定,這算是一個Mongod 啓動的一個常見錯誤,非法關閉的時候,lock 文件沒有remove,第二次啓動的時候檢查到有lock 文件的時候,就報這個錯誤了。


solution(查看log能夠發現):
1)首先刪除/var/lib/mongo/目錄下的mongod.lock文件
rm /var/lib/mongo/mongod.lock
2) repair方式啓動mongodb
mongod -f /etc/mongod.conf --repair
3) 再啓動一次mongodb
這裏必定要再啓動一次,否則啓動client端仍然連不到server
mongod -f /etc/mongod.confmysql

也能夠從新指定一個repairPath

mongod --dbpath /etc/mongo/db --repair --repairPath /etc/mongo/db0sql

mongod --dbpath /etc/mongo/db --repair --repairPath /etc/mongo/db0mongodb

 

查了查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/app

若是後臺執行spa

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


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

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

原理是:把數據從新讀一遍,而後寫到另外一個庫中server

 

 

刪除MongoDb安裝目錄下的 mongod.lock 文件和日誌文件 mongodb.log
rm -rf logs/
rm -rf /usr/local/mongodb/data/mongod.lock
mkdir -p /storage/mongodb/tmp/
 ./mongodb/bin/mongod --repair --dbpath /usr/local/mongodb/data/ --repairpath /storage/mongodb/tmp/
正常關閉
killall mongod 
啓動
  ./mongodb/bin/mongod --dbpath=/usr/local/mongodb/data/ --logpath=/usr/local/mongodb/logs/mongodb.log -logappend -fork -port=28314
相關文章
相關標籤/搜索