RDSのスロークエリログをローテーションするには
RDSに用意されている下記ストアドプロシージャを実行する
mysql> CALL mysql.rds_rotate_slow_log;'
実行すると slow_log テーブルが slow_log_backupにコピーされる
世代管理はできず、一世代前のバックアップしか保持できない
slow_log_backup にあったデータは削除される
Bashから実行する例
$ vi RotateLog.bash #!/bin/bash ID=mysqlのID PW=mysqlのPW HOST=mysqlのホスト名 DB=mysqlのDB # スロークエリログをローテートするストアドプロシージャー SQL='CALL mysql.rds_rotate_slow_log;' # ストアドプロシージャ実行 echo $SQL | mysql -u $ID -p$PW -h $HOST $DB
cronから上のスクリプトを日曜0時に実行する例
$ crontab -l 0 0 * * 0 /hoge/RotateLog.bash
RDS でスロークエリログをとるときの設定は下記参照のこと
[AWS] RDSでスロークエリログを取れるように設定したときの メモ