中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB 日志切換(Rotate Log Files)實戰

發布時間:2020-06-22 02:17:10 來源:網絡 閱讀:9645 作者:UltraSQL 欄目:MongoDB數據庫

MongoDB 日志切換(Rotate Log Files)實戰

 

1. 在mongo shell下,執行logRotate命令:    

use admin    
db.runCommand({logRotate:1})


需要在mongos,mongod,config server運行。


該方式的變種:

a) 在unix shell下運行:  

mongo localhost/admin –eval “dbo.runCommand({logRotate:1})”

 

b) Bash腳本:  
#!/bin/sh    
### log rotate    
mongo localhost/admin –evel “db.runCommand({logRotate:1})”    
### compress newly rotated    
for f in /var/log/mongodb/mongod.log.????-??-??T??-??-??;    
do    
7za a “$f.z” “$f”    
rm –f “$f”    
done

 

c) 將如下腳本保存到logRotate.js文件:  

db.getMongo().getDB(“admin”).runCommand({logRotate:1})


創建腳本logRotate.sh:    

#!/bin/sh    
# Clear old logs    
rm /var/log/mongodb/mongod.log.*    
# Rotate logs    
mongo logRotate.js

 

d) logRotate.sh //寫到計劃任務crontab即可(需要expect軟件包)  

#!/usr/bin/expect –f    
spawn /usr/local/mongodb/bin/mongo admin -udev -ptest –quiet    
expect ">"    
send db.runCommand("logRotate")    
send "\r\n"    
expect ">"    
send "exit"

 

2. 使用SIGUSR1信號:    

kill –SIGUSR1 <mongod process id>    
find /var/log/mongodb/mongodb.log.* -mtime +7 –delete


該方法的變種:

a) 用python寫的定時腳本,每天產生一個新的log,超過7天的log自行刪除。

#!/bin/env python
import sys
import os
import commands
import datetime,time
#get mongo pid
mongo_pid = commands.getoutput("/sbin/pidof mongod")
print mongo_pid
#send Sig to mongo
if mongo_pid != '':
cmd = "/bin/kill -USR1 %s" %(mongo_pid)
print cmd
mongo_rotate = commands.getoutput(cmd)
else:
print "mongod is not running..."
#clean log which > 7 days
str_now = time.strftime("%Y-%m-%d")
dat_now = time.strptime(str_now,"%Y-%m-%d")
array_dat_now = datetime.datetime(dat_now[0],dat_now[1],dat_now[2])
lns = commands.getoutput("/bin/ls --full-time /var/log/mongodb/|awk '{print $6, $9}'")
for ln in lns.split('\n'):
ws = ln.split()
if len(ws) != 2:
continue
ws1 = time.strptime(ws[0],"%Y-%m-%d")
ws2 = datetime.datetime(ws1[0],ws1[1],ws1[2])
if (array_dat_now - ws2).days > 7:
v_del = commands.getoutput("/bin/rm -rf /var/log/mongodb//%s" % (ws[1]))

 

在root下crontab –e編輯定時任務

0 2 * * * /root/mongo_log_rotate.py >/root/null 2>&1

 

3. 日志管理工具logrotate

自動化的最好方式是使用logrotate,其中copytruncate參數能更好工作。

拷貝以下代碼到/etc/logrotate.d/mongodb文件中,確保腳本中的路徑和文件名正確。

# vi /etc/logrotate.d/mongodb
/var/log/mongodb/*.log {
daily
rotate 7
compress
dateext
missingok
notifempty
sharedscripts
copytruncate
postrotate
/bin/kill -SIGUSR1 `cat /var/lib/mongo/mongod.lock 2> /dev/null` 2> /dev/null || true
endscript
}
# logrotate –f /etc/logrotate.d/mongodb

 

4. Mongodb bug    
mongodb穩定性差強人意。在切換過程中也會導致mongodb進程終止。    
具體內容可以查看下mongodb bug系統:SERVER-4739、SERVER-3339。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通河县| 莱州市| 阿鲁科尔沁旗| 江达县| 浮山县| 宜城市| 扎囊县| 犍为县| 清镇市| 珲春市| 垫江县| 镇宁| 营山县| 肥东县| 中江县| 静海县| 罗源县| 罗甸县| 临夏市| 泽州县| 怀宁县| 邵东县| 宜宾市| 攀枝花市| 伊通| 松桃| 甘孜| 堆龙德庆县| 莎车县| 清涧县| 中卫市| 双峰县| 南陵县| 衡水市| 雅江县| 台安县| 黔南| 贞丰县| 恭城| 大邑县| 吉木萨尔县|