masalibの日記

システム開発、運用と猫の写真ブログです

mysqlのスロークエリのローテーション

blog.inouetakuya.info

普通はlogrotate.dでおこなうみたいなのですが
うまくいかず・・・cronで逃げてしまった

スロークエリの設定

#!/bin/sh
DAY=`env TZ=JST+15 date "+%Y%m%d"`
echo "start $DAY">>/var/tmp/slow_query_db.log

# スロークエリをoff
mysql -u root -ppassword -e "set global slow_query_log = OFF;"

mv -f /var/log/mysqld/slow_query.log /var/log/mysqld/slow_query$DAY.log
touch /var/log/mysqld/slow_query.log
chmod 777 /var/log/mysqld/slow_query.log

# スロークエリをon
mysql -u root -ppassword -e "set global slow_query_log = ON;"

echo "end $DAY">>/var/tmp/slow_query_db.log

スロークエリをoffにしてからバックアップをとらないと
そこでもスロークエリがでてしまう・・・
結局、この形になった・・・

#!/bin/sh
DAY=`env TZ=JST+15 date "+%Y%m%d"`
echo "start">>/var/tmp/dbbackup.log
date >>/var/tmp/dbbackup.log

# スロークエリをoff
mysql -u root -ppassword -e "set global slow_query_log = OFF;"

FILENAME="db_site_$DAY.sql"
mysqldump -u root --password=password db_site >"/mnt/backup_db/$FILENAME"

# スロークエリをon
mysql -u root -ppassword -e "set global slow_query_log = ON;"

find /mnt/backup_db/*.sql -mtime +7 -exec rm {} \;

もっとスマートなやり方があると思うけど・・・とりあえずこの形になった