RDSでslow_logを出力するようにしていたけど、肥大化や調査等の理由でslow_logをクリアしなければならないことがあります。
権限上truncateできないのですが、RDSにはストアドが用意されているので、ストアドでslow_logをクリアすることができる。
スポンサーリンク
ストアド
RDSに用意されているストアドを使ってクリアをする。
CALL mysql.rds_rotate_slow_log
中身はバックアップを取って新しくテーブルを作っているだけ。
結果
良さそう
mysql> select count(*) from mysql.slow_log; +----------+ | count(*) | +----------+ | 745 | +----------+ 1 row in set (0.05 sec) mysql> CALL mysql.rds_rotate_slow_log; Query OK, 0 rows affected (0.12 sec) mysql> select count(*) from mysql.slow_log; +----------+ | count(*) | +----------+ | 0 | +----------+ 1 row in set (0.00 sec) mysql> select count(*) from mysql.slow_log_backup; +----------+ | count(*) | +----------+ | 745 | +----------+ 1 row in set (0.05 sec)
もう一度ストアドを実行すると今のslow_log_backupが削除されて作り直されるので、バックアップ出来るのは1つ前のもののみになる。
補足
ちなみにgeneral_logに対しても同じストアドが用意されているので、general_logをクリアしたいときには以下を実行する。
CALL mysql.rds_rotate_general_log;
AWSを使うことが多くなってきたので、覚えておきたい。