̃Gg[͂ĂȃubN}[Nɒlj

MySQL :: スロークエリをログに出力する & メール通知



my.conf の設定
[mysqld]
# slow queries
log-slow-queries=/tmp/mysql-slow.log #スロークエリログの保存場所
long-query-time=3                    #何秒以上を対象とするか
log-long-format                      #indexが使われていないSQLもログに残す



スロークエリログを整形して読むコマンド
% sudo mysqldumpslow /tmp/mysql-slow.log



スロークエリログのローテート & メール通知

cron で毎日ローテートさせて、メール通知

for host in db1.example.com db2.example.com
do
    slowlog="/tmp/mysql-slow.log"
    ssh $host mysqldumpslow $slowlog | mail -s "slowquery@$host ["`date +\%Y\%m\%d`"]" hoge@example.com
    ssh $host mv $slowlog $slowlog.`date +%Y%m%d`
    ssh $host mysqladmin -uroot flush-logs
done



database/mysql/setup/slow_query.txt