セクション5.2「MySQL Server ログ」で説明したように、MySQL Server は実行中のアクティビティーの内容を確認するのに役立ついくつかの異なるログファイルを作成することができます。ただし、多くのディスクスペースを占有しすぎないようにするために、これらのファイルを定期的にクリーンアップする必要があります。
ロギングを有効にして MySQL を使用しているとき、古いログファイルをときどきバックアップおよび削除して、新しいファイルへのロギングを開始するよう MySQL に指示することが必要な場合があります。セクション7.2「データベースバックアップ方法」を参照してください。
Linux (Red Hat) のインストールでは、これを行うために mysql-log-rotate
スクリプトを使用できます。RPM 配布から MySQL をインストールした場合、このスクリプトは自動的にインストールされているはずです。レプリケーション用にバイナリログを使用している場合、このスクリプトには注意が必要です。バイナリログの内容がすべてのスレーブによって処理されたことに確信が持てるまでは、バイナリログを削除しないでください。
ほかのシステムでは、ログファイルを処理するための、cron (またはその同等物) で開始する短いスクリプトを自分でインストールする必要があります。
バイナリログの場合、指定した日数後にバイナリログファイルを自動的に期限切れにする expire_logs_days
システム変数を設定できます (セクション5.1.4「サーバーシステム変数」を参照してください)。レプリケーションを使用している場合、スレーブがマスターよりも遅延できる最大日数を下回らないような変数を設定するようにしてください。バイナリログをオンデマンドで削除するには、PURGE BINARY LOGS
ステートメントを使用します (セクション13.4.1.1「PURGE BINARY LOGS 構文」を参照してください)。
ログをフラッシュすることによって、MySQL が新しいログファイルを使用することを強制的に開始できます。ログのフラッシュは、FLUSH LOGS
ステートメントを発行したり、mysqladmin flush-logs、mysqladmin refresh、mysqldump --flush-logs、または mysqldump --master-data コマンドを実行したりしたときに実行されます。セクション13.7.6.3「FLUSH 構文」、セクション4.5.2「mysqladmin — MySQL サーバーの管理を行うクライアント」、およびセクション4.5.4「mysqldump — データベースバックアッププログラム」を参照してください。さらに、バイナリログは、サイズが max_binlog_size
システム変数の値に達するとフラッシュされます。
FLUSH LOGS
は、個々のログの選択的なフラッシュを可能にするためのオプションの修飾子をサポートします (FLUSH BINARY LOGS
など)。
ログのフラッシュ操作は、次のことを実行します。
ログファイルに対する一般クエリーロギングまたはスロークエリーロギングが有効化されている場合、サーバーは一般クエリーログファイルまたはスロークエリーログファイルを閉じて再オープンします。
バイナリロギングが有効化されている場合、サーバーは現在のバイナリログファイルを閉じ、新しいログファイルを次のシーケンス番号で開きます。
エラーログがファイルに書き込まれるようにするためにサーバーが
--log-error
オプションで開始されている場合、サーバーはログファイルを閉じて再オープンします。
ログをフラッシュすると、サーバーは新しいバイナリログファイルを作成します。ただし、一般クエリーログファイルおよびスロークエリーログファイルについては、それらを閉じて再オープンするだけです。Unix で新しいファイルが作成されるようにするには、現在のログファイルをフラッシュする前にそれらを名前変更します。フラッシュ時に、サーバーは新しいログファイルを元の名前で開きます。たとえば、一般クエリーログファイルおよびスロークエリーログファイルの名前が mysql.log
および mysql-slow.log
の場合、次のような一連のコマンドを使用することができます。
shell> cd mysql-data-directory
shell> mv mysql.log mysql.old
shell> mv mysql-slow.log mysql-slow.old
shell> mysqladmin flush-logs
Windows では、mv の代わりに rename を使用してください。
この時点で、mysql.old
および mysql-slow.old
のバックアップを作成し、そのあとこれらをディスクから削除することができます。
エラーログファイルがある場合、同様の方法を使用してこれらをバックアップできます。
ログを無効化することによって、一般クエリーログまたはスロークエリーログを実行時に名前変更できます。
SET GLOBAL general_log = 'OFF';
SET GLOBAL slow_query_log = 'OFF';
ログが無効化されている場合、コマンド行などの外部からログファイルを名前変更してください。次に、ログをふたたび有効にします。
SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';
この方法はすべてのプラットフォームで動作し、サーバー再起動を必要としません。