1. 程式人生 > >mysql慢查詢日誌 (李作強)

mysql慢查詢日誌 (李作強)

mysql慢查詢日誌預設情況下統統寫入到一個檔案中,檔案會變的越來越大,非常不方便檢視分析。可以利用logrotate來對mysql慢查詢日誌、錯誤日誌進行切割,便於DBA分析每日慢查詢,優化資料庫。
logrotate工具介紹參見《logrotate日誌管理工具》。
1. 定義日誌輪滾策略
vim /root/.my.cnf
[mysqladmin]
password = modernmedia
user= root

vi /etc/logrotate.d/mysqld //手寫配置檔案
!/bin/bash
/MM/DB/server0/err.log /MM/DB/server1/err.log {
weekly
rotate 10
copytruncate
delaycompress
compress
notifempty
missingok
postrotate
/bin/kill -USR1 cat /data/MM/DB/server*/mysql.pid 2>/dev/null

2> /dev/null || true
endscript
}

註釋:
1.[ -f ] 解釋 [ 是 linux 命令, 不信, which [ 試試;跟 test 命令 含義 一樣 ; [ -f xxx] 是 測試 檔案 是否 存在。
2. 系統將 程序xx 的 程序號 儲存 在 /var/run/xx.pid 檔案下 ;所以 cat /data/MM/DB/server*/mysql.pid 是為了 取到 mysql的程序號。
kill -USR1:
USR1亦通常被用來告知應用程式過載配置檔案;例如,向Apache HTTP伺服器傳送一個USR1訊號將導致以下步驟的發生:停止接受新的連線,等待當前連線停止,重新載入配置檔案,重新開啟日誌檔案,重啟伺服器,從而實現相對平滑的不關機的更改。

  1. 設定計劃任務
    vim /etc/crontab
    59 23 * * * logrotate -f /etc/logrotate.d/mysqld
    這樣每天23點59分鐘執行日誌切割。

daily 指定轉儲週期為每天
weekly 指定轉儲週期為每週
monthly 指定轉儲週期為每月
dateext 在檔案末尾添加當前日期
compress 通過gzip 壓縮轉儲以後的日誌
nocompress 不需要壓縮時,用這個引數
copytruncate 先把日誌內容複製到舊日誌檔案後才清除日誌檔案內容,可以保證日誌記錄的連續性
nocopytruncate 備份日誌檔案但是不截斷
create mode owner group 轉儲檔案,使用指定的檔案模式建立新的日誌檔案
nocreate 不建立新的日誌檔案
delaycompress 和 compress 一起使用時,轉儲的日誌檔案到下一次轉儲時才壓縮
nodelaycompress 覆蓋 delaycompress 選項,轉儲同時壓縮。
errors address 專儲時的錯誤資訊傳送到指定的Email 地址
ifempty 即使是空檔案也轉儲,這個是 logrotate 的預設選項。
notifempty 如果是空檔案的話,不轉儲
mail address 把轉儲的日誌檔案傳送到指定的E-mail 地址
nomail 轉儲時不傳送日誌檔案
olddir directory 轉儲後的日誌檔案放入指定的目錄,必須和當前日誌檔案在同一個檔案系統
noolddir 轉儲後的日誌檔案和當前日誌檔案放在同一個目錄下
rotate count 指定日誌檔案刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
tabootext [+] list 讓logrotate不轉儲指定副檔名的檔案,預設的副檔名是:.rpm-orig, .rpmsave, v, 和 ~
size size當日志文件到達指定的大小時才轉儲,Size 可以指定 bytes (預設)以及KB (sizek)或者MB (sizem).
prerotate/endscript 在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
postrotate/endscript 在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行