MySQL Server は、様々なやりとりを把握できるように、様々なログ ファイルを数多く作成しています。(項4.11. 「MySQL サーバ ログ」 を参照のこと。) しかし、ディクス スペースを空けるために、これらのファイルは定期的にクリーンアップすることが必要です。
MySQL でロギングを有効化しているときは、定期的にファイルのバックアップを取り、古いファイルは削除するなどして、時には MySQL ロギング を新しいファイルで行うことも検討してください。詳細は 項4.9.1. 「データベースのバックアップ」 を参照してください。
Linux (Red Hat) では、mysql-log-rotate
スクリプトを使用して、古いログ
ファイルの処理を自動的に行うことができます。RPM
配布から MySQL
をインストールすると、このスクリプトを自動的にインストールしています。注意:
レプリケーションにバイナリ
ログを使用している場合は、このスクリプトの扱いには注意が必要です。
他のシステムでは、ログファイルを処理するための短いスクリプトを自分でインストールする必要があります。このスクリプトは、cron などで開始します。
MySQL に新しいログ
ファイルの使用を強制するには、mysqladmin
flush-logs または mysqladmin
refresh を使用するか、SQL コマンド
FLUSH LOGS
を使用します。詳細は、項12.5.5.2. 「FLUSH
構文」
および 項7.9. 「mysqladmin — MySQL サーバの管理を行うクライアント」
を参照してください。
ログのフラッシュ操作は次のことを行います。
ログ ファイルへの一般クエリ ロギング
(--log
)、またはスロー クエリ
ロギング (--log-slow-queries
)
を有効化した場合、サーバが一般クエリ
ログ ファイルまたはスロー クエリ ログ
ファイルを閉じ、再開する。
バイナリ ロギング (--log-bin
)
を使用している場合、サーバは現行のログ
ファイルを閉じ、シーケンス番号で新しいログ
ファイルを開く。
--log-error
オプションでエラー
ログ
ファイル名を指定している場合、-old
をサフィックスとするエラー ログ
ファイルの名前になり、新しいエラー
エラー ログ ファイルを作成する。
ログをフラッシュすると、サーバで新しいバイナリ
ログ
ファイルを作成します。しかし、これは一般ログとスロー
ログを閉じて、また再開するだけに過ぎません。Unix
環境で新しいファイルを作成するようにするには、フラッシュする前に現行ログの名前を変更します。そうすると、フラッシュするときに、サーバがオリジナルの名前で新しいログを開きます。たとえば、一般クエリ
ログを mysql.log
とし、スロークエリのログを
mysql-slow.log
とした場合には、次のようにコマンドをつなげます。
shell>cd
shell>mysql-data-directory
mv mysql.log mysql.old
shell>mv mysql-slow.log mysql-slow.old
shell>mysqladmin flush-logs
この時点で、mysql.old
と
mysql-slow.log
のバックアップができるので、ディスクから削除することができます。
Windows では、サーバがログ ファイルを使用している間は、ログ ファイルの名前変更はできません。まずサーバを停止してから、ファイルの名前を変更し、そして、サーバを再起動してから新しいログ ファイルを作成します。
MySQL 5.1.12 から、ランタイムで一般クエリ ログとスロー クエリ ログを無効化できるようになりました。
SET GLOBAL general_log = 'OFF'; SET GLOBAL slow_query_log = 'OFF';
ログを無効化した状態で、コマンドラインなどを使用して、ログ ファイルの名前を外部的に変更します。そして、ログを再び有効化します。
SET GLOBAL general_log = 'ON'; SET GLOBAL slow_query_log = 'ON';
このやり方は、どのプラットフォームでも使用でき、サーバの再起動は不要です。