MongoDB配置按天存儲日誌文件完結篇

MongoDB配置按天存儲日誌文件

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});"
mongo 127.0.0.1:27022/admin --eval "db.auth('admin','admin@123');db.runCommand({logRotate:1});"
mongo 127.0.0.1:27023/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的穩定性目前確實不盡人意。

相關文章
相關標籤/搜索