按日期分割mysql slow log

2021-08-25 10:18:16 字數 1110 閱讀 6726

有些mysql slow log是乙個大檔案,如果不按日期分開會很查詢。

所以寫了乙個指令碼分割。

[quote]

mysqlslow=mysql-slow-new.log

mysqlslow_work=mysqlslow_work.log

cp -f $mysqlslow $mysqlslow_work

for((i=528;i<=925;i++)); do

split_date=100$i

echo $split_date

let "next_date=$split_date+1"

#echo $next_date

grep -n -m 1 "time: $next_date " $mysqlslow_work

if [ $? -eq 0 ]

then

#found

cut_line=`grep -n -m 1 "time: $next_date " $mysqlslow_work | awk -f: ''`

#echo $cut_line

max_line=`wc $mysqlslow_work | awk ''`

let "rest_line=$max_line-cut_line"

head -n $cut_line $mysqlslow_work > mysqlslow_$split_date.log

tail -n $rest_line $mysqlslow_work > t.log

cp -f t.log $mysqlslow_work

echo $rest_line

fidone

[/quote]

指令碼的思路是找到 "time: ******" 的日期,如果找5/28,則需要找後一天的第一行再減1,這樣用head可以分割出這一天的日誌,然後用tail把後面的取出來作為下一次查詢。

for((i=528;i<=925;i++)); do

done

實際上是乙個數字迴圈,但不要緊,沒找到的將被忽略,不會生成多餘檔案。另外在月末會生成錯誤的日期檔案,因為是以數字+1,所以找下一天會錯誤,但只是檔名錯,內容是對的,會生成下個月00號的檔名。也可以多加個判斷,這裡就懶得動了。

nginx日誌按日期分割

bin bash 零點執行該指令碼 nginx日誌檔案所在的目錄 logs path 日誌資料夾路徑 獲取昨天的yyyy mm dd yesterday date d yesterday y m d 移動檔案 mv access.log access log 向nginx主程序傳送usr1訊號,us...

Nginx日誌按日期分割

原創 nginx是沒有以日期格式作為檔名來儲存的,也就是說,nginx不像tomcat,每天自動生成乙個日期檔案,所有的日誌都是以乙個名字來儲存,時間久了日誌檔案會變得很大。這樣非常不利於分析。雖然nginx沒有這個功能但我們可以寫乙個小指令碼配合計畫任務來達到這樣的效果。即讓nginx每天產生乙個...

python學習 3 按日期分割資料集

按日期分割資料集 1 首先我這裡的資料集,形式如下圖 這裡可以看見第一行為資料的屬性,最後乙個為時間,格式為.csv檔案,我希望按日期 年月日 劃分出資料,即按天將資料分割出來。import pandas d pandas.read csv d1828.csv d1118 d d time str....