MySQL 5.1 リファレンスマニュアル :: 4 データベース管理 :: 4.9 バックアップとリカバリ :: 4.9.4 テーブル保守とクラッシュ リカバリ :: 4.9.4.6 テーブル保守計画
« 4.9.4.5 テーブル情報の取得

4.10 MySQL のローカライズと国際的使用 »
Section Navigation      [Toggle]
  • 4.9.4 テーブル保守とクラッシュ リカバリ
  • 4.9.4.1 myisamchk でクラッシュ リカバリ
  • 4.9.4.2 MyISAM テーブルのエラー チェック方法
  • 4.9.4.3 テーブルの修復方法
  • 4.9.4.4 テーブルの最適化
  • 4.9.4.5 テーブル情報の取得
  • 4.9.4.6 テーブル保守計画

4.9.4.6. テーブル保守計画

問題が発生する前に、テーブル チェックを定期的に行います (推奨)。MyISAM テーブルをチェックまたは修復するには、CHECK TABLE および REPAIR TABLE ステートメントを使用します。詳細は、項12.5.2.3. 「CHECK TABLE 構文」 と 項12.5.2.6. 「REPAIR TABLE 構文」 を参照してください。

別の方法としては、myisamchk を使用してテーブル チェックを行います。保守を目的とする場合は、myisamchk -s を使用します。-s (--silent の短縮形)を使用すると、サイレントモードで myisamchk を実行でき、エラー発生部分のメッセージを出力します。

MyISAM のテーブル チェックには自動化をお勧めします。自動チェックを有効にしておくと、「予期していないテーブル クラッシュ」 などでマシンが更新中であるにもかかわらず、再起動した場合などに、それぞれのテーブルをチェックする手間を省いて、影響があったテーブルを探すことができます。MyISAM テーブルの自動化設定を行うには、サーバを --myisam-recover オプションで起動してください。詳細は、項4.2.2. 「コマンド オプション」 を参照してください。

テーブル チェックは日常的に行うことをお勧めします。MySQL AB では、一週間に一度、重要なテーブルに対して、cron コマンドを使用して確認作業を行っています。たとえば、crontab ファイルでは、次のようにしています。

35 0 * * 0 /path/to/myisamchk --fast --silent /path/to/datadir/*/*.MYI

この出力には、クラッシュしたテテーブルの情報が出るため、必要に応じて、確認や修復の作業ができます。

実際に、MySQL AB ではここ数年間、ハードウェアの故障以外のテーブル クラッシュは発生していないため、一週間に一度という頻度がその有効性を示しています。

MySQL AB 自体では、この方法でテーブル チェックを行っていますが、実際、ユーザがこの作業を行うときは、MySQL を完全に信用できると確証できるまでは、myisamchk -s を1 日 1 度、行うことをお勧めします。

VARCHAR、BLOB、TEXT などのテーブルで、MyISAM テーブルを動的レコードで更新していたり、テーブルに削除できるレコードが沢山あっても、時々そのテーブルでデフラグやリクレーム (返還) を行なっていれば、MySQL テーブルの保守は簡単に行なえます。これができるようにするには、対象となるテーブルに OPTIMIZE TABLE を使用します。または、しばらくの間、mysqld サーバを停止することが可能な場合は、そのサーバを止めて、場所をデータ ディレクトリに置き換えて、次のコマンドを使用します。

shell> myisamchk -r -s --sort-index --sort_buffer_size=16M */*.MYI
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