普通にアクセスできるものの、データの登録や更新ができない。つまり、selectはOKだけとinsertやupdateがNG。
この時点でだいたい原因は想像できた。サーバーにログインして「df -h」をしてみると、やっぱり、/varディレクトリが100%になっている。つまりMySQLが更新ログ(バイナリログ)をディスクに書き込めず、処理ができなかったというわけだ。
よく見てみると、「/var/lib/mysql/DB名.log」というファイルが肥大しまくっている。実は、開発時にデバッグ用にmy.cnfでlogオプションを有効にしており、本番運用開始後もずっとそのままだったのが原因。
さっそくログファイルを削除し、my.cnfのlogオプションをコメントアウトしてmysqlを再起動。問題は無事、解消されました。
ひとまず一件落着なんですが、同じディレクトリにあるバイナリログを見てみると、なんと116までログが増えていた。こちらも合計するとかなりのサイズなので、削除することに。
バイナリログ処理関連の構文はこちらに載ってます。
http://dev.mysql.com/doc/refman/4.1/ja/replication-master-sql.html
ひとまず、昨年末までの分を削除。
mysql> PURGE MASTER LOGS BEFORE '2006-12-31 23:59:59';
これでバイナリログがごっそり消えてすっきり。/varディレクトリの空きもぐっと増えました。
ついでに、日付指定をしないで全部のバイナリログを消す場合はRESETを使います。
mysql> RESET MASTER;
それから、今回のようなログ肥大化を防ぐために、my.cnfに下記を追加しました。
expire_logs_days = 7
7日以上経った古いバイナリログは削除する、という設定です。
詳細はこちら↓
http://www.limy.org/program/db/mysql/mysql_variables.html
0 件のコメント:
コメントを投稿