« 2006年12月 | メイン | 2007年05月 »

2007年04月10日

MySQL バイナリログを自動削除したい

MySQLでは、「バイナリログは自動で削除されないので、手作業で定期的に削除する必要がある」というのが定説だと思っていたのですが、自動削除してくれるオプションがありました。
/etc/my.cnf で下記のように記述します。

[mysqld]
...
expire_logs_days = 30

log-bin など、バイナリログに関する設定の近くに記述するとわかりやすいでしょう。

expire_logs_daysでは、バイナリログを自動削除する日数を指定します。
デフォルトは0。この場合ログファイルは自動削除されません。
なお、ログを削除するタイミングは、MySQLサーバ起動時もしくはログをローテートするときに限られるので、この日数が経過したから といって即座にログファイが削除されるとは限りません。

起動中のMySQLを停止せずに、SET GLOBAL コマンドでも設定できます。
(/etc/my.cnfにも書かないと再起動したときに反映されません。)

# mysql -u root -p
mysql> SET GLOBAL expire_logs_days = 30;

反映されているかどうか、確認します。

mysql> SHOW GLOBAL VARIABLES like 'expire_logs_days';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| expire_logs_days | 30 |
+------------------+-------+
1 row in set (0.00 sec)

この機能はMySQL4.1.0で入った機能ですが、なぜか日本語のマニュアルには記述がなく、英語マニュアルに記述されています。

http://dev.mysql.com/doc/refman/4.1/en/server-system-variables.html

ところで。
バイナリログには実行したSQL文が記録されます。
このため、調査に役立てる意味でも、僕がインフラ構築を行う場合は、レプリケーション機能を利用しない場合でも、ディスク容量に余裕がある限りバイナリログを出力するようにしています。

2007年04月09日

チャリ通再開

cycle.jpg
久しぶりの投稿になります。
前輪のパンクを直し、やっと昨日からチャリ通を再開しました。
地下鉄使うより早いし、気持ちいいし、いいなあ。
半年近く載っていなくても、考え事をしながら走っていてもいつの間にか家に着いてしまうから不思議。

そんなわけで、今月からまた少しずつブログを書こうと思います。