巨大なBinary logが生成されディスクフルになった場合 - MySQL4.x

MySQLはデータを更新する際に、バイナリログにその記録を残す。
リストアなどをする際に用いることが可能だが、大量のINSERTやUPDATEが飛び交っていると、知らないうちに数Gバイトものファイルになっていることがある。

そのため定期的にディスクから削除などを行う必要が出てくる。ディスクフルになった場合は、これらのファイルを疑ってみると原因をつきとめることができることもある。

バイナリログの削除

バイナリログを削除するには、通常は以下のようなコマンドを叩くだけでOK。

$ mysql -u mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 532 to server version: 4.0.25-standard-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> RESET MASTER;
Query OK, 0 rows affected (1.65 sec)

mysql> exit

バイナリログは通常、「/var/lib/mysql」といったデータディレクトリ配下に、「ホスト名-bin」といった名前で作成される。ある一定容量を超えると、ファイル名の末尾に連番をつけて別のファイルが作成される。
 ※「一定容量」は「max_binlog_size」の値を調整することで変更が可能。   またサーバを再起動しても別ファイルが作成される。

ディィスクフルなど1分1秒を争う緊急時にはどうしようもないが、必要があれば削除する前にこれらのデータのバックアップを取っておいた方が良いだろう。

関連

バイナリログは、以前の更新ログの代わりになるものです。更新ログは MySQL 5.0 でなくなります。バイナリログには、更新ログで利用可能だった情報がすべて、より効率的かつトランザクションセーフな方法で含まれます。

4.10.4. バイナリログ

SQLアンチパターン

SQLアンチパターン

Amazon