2017年11月28日 10:14:39 羊子雄起 閱讀數 2059mongodb
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 https://blog.csdn.net/u010499087/article/details/78652114shell
mongodb默認不提供直接按天來輸出日誌文件的配置,可是提供一個日誌清理的命令:logRotate。若是日誌不及時清理會致使mongo訪問愈來愈慢,甚至卡死。服務器
要使用logRotate命令須要進入到mongo shell,而後執行:spa
use admin.net
#db.auth('username','password');日誌
db.runCommand({logRotate:1});blog
必需要進到admin庫中才生效,若是配置auth須要填寫用戶名和密碼進程
執行完畢後會在logpath目錄中生成一個當前時間節點的備份文件,而且原來的日誌文件內容會被清除掉。crontab
具體的logRotate的介紹見:http://docs.mongodb.org/manual/tutorial/rotate-log-files/ci
在生產環境上不可能天天定時由人工來執行日誌文件清理,因此能夠寫一個腳本,由crontab定時在天天定時執行轉儲工做,具體腳本內容以下:
mongo 127.0.0.1:27021/admin --eval "db.auth('admin','admin@123');db.runCommand({logRotate:1});" ...... |
其中須要配置IP和端口,若是開啓auth,須要填寫訪問admin庫的用戶名和密碼 |
清理日誌sh
mongolog.sh
#!/bin/sh
mongo 127.0.0.1:27017/admin --eval "db.auth('root','2018');db.runCommand
({logRotate:1});"
sleep 20s
find /data/mongodb/logs/mongod.log.* -type f -mtime +1 -delete
刪除一天以上的日誌
chmod a+x mongolog.sh
crontab的配置以下:
18 11 * * * /data/mongodb/mongolog.sh >> /data/mongodb/success.log
成功後生成日誌
參考:http://www.16boke.com/article/detail/104
目前採起的方法:
· SIGUSR1 方法
killall -SIGUSR1 進程名
killall -SIGUSR1 mongod
天天0點定時執行來達切換日誌。
kill -SIGUSR1 進程id
kill -SIGUSR1 19555
經過mongod.lock查找進程id
kill -SIGUSR1 `cat /home/myleguan/mongo/mongod.lock`
大部分狀況下並沒有問題,但近期集中出現了兩臺服務器日誌切換時出現問題,0點到0點20分左右 ,日誌是空的。mongod 或者config報警,進程重啓(自動),該bug至少要到2.5.x才修復。 MongoDB的穩定性目前確實不盡人意。