【MySQL】バイナリログを自動削除したい(mysql-bin.******)
問題
/var/lib/mysql ディレクトリの中に、 バイナリログ(mysql-bin.******)がどんどんたまっていく。
バックアップを取ったらバイナリログは消えていって欲しい。
手動でやらないとだめ?
答え
こんなオプションがある。
[mysqld] expire_logs_days = 30
デフォルトは0で、自動削除しない。
上のように設定をすると、バイナリログをフラッシュしたときや再起動のときに古いバイナリログを削除する。
http://dev.mysql.com/doc/refman/5.1/ja/server-system-variables.html
なお、この設定が利用できるようになったのはMySQL4.1.0から。
http://dev.mysql.com/doc/refman/4.1/en/server-system-variables.html#sysvar_expire_logs_days
動作例
何の設定もしていないため、こんな風になっているサーバーがある。バイナリログが溜まっている。
-rw-rw---- 1 mysql mysql 513 3月 4 2010 mysql-bin.000001 -rw-rw---- 1 mysql mysql 125 3月 4 2010 mysql-bin.000002 -rw-rw---- 1 mysql mysql 65552 3月 4 2010 mysql-bin.000003 -rw-rw---- 1 mysql mysql 125 3月 4 2010 mysql-bin.000004 -rw-rw---- 1 mysql mysql 125 3月 4 2010 mysql-bin.000005 -rw-rw---- 1 mysql mysql 149858999 8月 4 2010 mysql-bin.000006 -rw-rw---- 1 mysql mysql 1073838697 12月 4 2010 mysql-bin.000007 -rw-rw---- 1 mysql mysql 1073764322 12月 22 21:55 mysql-bin.000008 -rw-rw---- 1 mysql mysql 65068940 1月 15 02:38 mysql-bin.000009 -rw-rw---- 1 mysql mysql 1073818287 3月 12 10:46 mysql-bin.000010 -rw-rw---- 1 mysql mysql 258316999 3月 23 02:02 mysql-bin.000011 -rw-rw---- 1 mysql mysql 125 3月 23 01:55 mysql-bin.000012 -rw-rw---- 1 mysql mysql 125 3月 23 01:58 mysql-bin.000013 -rw-rw---- 1 mysql mysql 125 3月 23 01:59 mysql-bin.000014 -rw-rw---- 1 mysql mysql 125 3月 23 02:03 mysql-bin.000015 -rw-rw---- 1 mysql mysql 1074550061 4月 11 10:40 mysql-bin.000016 -rw-rw---- 1 mysql mysql 1073771373 4月 27 12:04 mysql-bin.000017 -rw-rw---- 1 mysql mysql 1073793703 5月 12 21:23 mysql-bin.000018 -rw-rw---- 1 mysql mysql 1073742097 5月 24 20:30 mysql-bin.000019 -rw-rw---- 1 mysql mysql 192311103 5月 26 10:20 mysql-bin.000020 -rw-rw---- 1 mysql mysql 1073750496 6月 5 06:50 mysql-bin.000021 -rw-rw---- 1 mysql mysql 433399425 6月 9 18:41 mysql-bin.000022 -rw-rw---- 1 mysql mysql 399 6月 5 06:50 mysql-bin.index ...
バックアップを取った後、expire_logs_days=10(10日間)として、再起動してみた。
こうなった。
-rw-rw---- 1 mysql mysql 1073750496 6月 5 06:50 mysql-bin.000021 -rw-rw---- 1 mysql mysql 476739935 6月 10 06:26 mysql-bin.000022 -rw-rw---- 1 mysql mysql 3555 6月 10 06:26 mysql-bin.000023 -rw-rw---- 1 mysql mysql 57 6月 10 06:26 mysql-bin.index
再起動しないで適用するには
mysqld を再起動しないで、オンラインで設定を適用するには、以下を実行する。
mysql> SET GLOBAL expire_logs_days = 7;
すぐに指定のログを削除するには
以下で削除が可能。
mysql> purge master logs to ‘mysql-bin.010’;
コメント