0

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

第一前提として、スロークエリーのログを保存できるようにしておく。
log-slow-queries=/mnt/log/mysql-slow.log
long_query_time=5
log-queries-not-using-indexes

これは、自分の環境だけなのか mysql-slow.log を予め作っておく必要がある。
mySQLが勝手に生成してくれない。
今も謎。仕様?
# mkdir /mnt/log/mysql-slow.log
# chmod 666 /mnt/log/mysql-slow.log

ログローテーションで使うのでrootのアイパスをmy.cnfに追記しておく。
[mysqladmin]
password = "hogehoge"
user = root

そしてmysqldを再起動。

設定ファイルのテンプレートがyumでmySQLをいれたら入ってたのでそれを利用

# cp /usr/local/mysql/share/mysql/mysql-log-rotate /etc/logrotate.d/

/mnt/log/mysql-slow.log {
notifempty
daily
rotate 3
missingok
compress
postrotate
# just if mysqld is really running
touch /mnt/log/mysql-slow.log
chmod 666 /mnt/log/mysql-slow.log
if test -x /usr/local/mysql/bin/mysqladmin && \
/usr/local/mysql/bin/mysqladmin ping &>/dev/null
then
/usr/local/mysql/bin/mysqladmin flush-logs
fi
endscript
}

上記のようなログファイルが生成されないという問題があるので、無理やりファイルを作ってローテーションする。

そもそもローテーションしないといけないくらいログが溜まること自体問題なのだけど、1ファイルがでかくなり過ぎるのは精神衛生上もよくないので一応やっておく。

大阪のWEB屋です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です