MySQL 5.1 リファレンスマニュアル :: 4 データベース管理 :: 4.11 MySQL サーバ ログ :: 4.11.6 ログ ファイルの保守
« 4.11.5 スロー クエリ ログ

4.12 同じマシン上での複数 MySQL サーバの実行 »
Section Navigation      [Toggle]
  • 4.11 MySQL サーバ ログ
  • 4.11.1 一般クエリとスロー クエリのログ出力先の選択
  • 4.11.2 エラー ログ
  • 4.11.3 一般クエリ ログ
  • 4.11.4 バイナリ ログ
  • 4.11.5 スロー クエリ ログ
  • 4.11.6 ログ ファイルの保守

4.11.6. ログ ファイルの保守

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 mysql-data-directory
shell> 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';

このやり方は、どのプラットフォームでも使用でき、サーバの再起動は不要です。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates