MySQL 5.1 リファレンスマニュアル :: 4 データベース管理 :: 4.9 バックアップとリカバリ :: 4.9.4 テーブル保守とクラッシュ リカバリ :: 4.9.4.1 myisamchk でクラッシュ リカバリ
« 4.9.4 テーブル保守とクラッシュ リカバリ

4.9.4.2 MyISAM テーブルのエラー チェック方法 »
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.1. myisamchk でクラッシュ リカバリ

このセクションでは、MySQL データベースのデータ破損に対するチェックと対処方法について説明します。テーブルが頻繁に破損する場合は、項B.1.4.2. 「What to Do If MySQL Keeps Crashing」 を参照するなどして、その原因究明を行い必要があります。

MyISAM テーブルが破損する原因に関する説明は、項13.4.4. 「MyISAM テーブルの問題点」 を参照してください。

外部ロックを無効にして mysqld を実行する場合 (MySQL 4.0 以降のデフォルト)、mysqld と myisamchk で同時にテーブルをチェックするときは、注意が必要です。myisamchk を実行している間は、mysqld を使用したテーブルへのアクセスできるのは自分だけであると確証できる場合は、テーブルのチェックを開始する前に、mysqladmin flush-tables を実行するだけで作業が行えます。もし確証できない場合は、テーブルのチェックするときに、mysqld を停止します。myisamchk でテーブルをチェックすると同時に、mysqld で更新を行っていると、テーブルが破損していなくても警告がでます。

外部ロックを有効にしてサーバを実行する場合は、myisamchk を使用していつでもテーブルをチェックできます。この場合、サーバが myisamchk で使用しているテーブルを更新しようとすると、サーバが myisamchk を優先して、待機します。

myisamchk をテーブルの修復または最適化に使用する場合は、mysqld サーバが目的のテーブルを使用していないことを常に確認してください。これは外部ロックを無効にしているときにも通用します。mysqld を停止できない場合は最低限として、myisamchk を実行する前に mysqladmin flush-tables を実行してください。サーバと myisamchk が同時にテーブルにアクセスすると、破損の原因になります。

クラッシュ リカバリを行うときは、データベースにある MyISAM テーブルの tbl_name それぞれが、データベース ディレクトリ内の 3 つのファイルに対応していることを理解する必要があります。この 3 ファイルは次の通りです。

ファイル 用途
tbl_name.frm テーブル定義ファイル
tbl_name.MYD データ ファイル
tbl_name.MYI インデックス ファイル

この 3 ファイルは、様々な形で破損の原因に関係していますが、最も問題が発生するのは、データ ファイルとインデックス ファイルです。

myisamchk は、..MYD (データ)ファイルのコピーをレコードごとに生成します。修復の最終段階で古い .MYD ファイルを削除して、新規ファイルをオリジナルの名前に変更します。--quick を使用している場合、myisamchk ではテンポラリの .MYD ファイルを生成しません。その代わりに .MYD ファイルが正常であるとみなし、.MYD ファイルに手を加えずに新規インデックス ファイルだけを生成します。.MYD ファイルに問題があった場合は myisamchk が自動的に検知して修復を中止するため、この方法は安全です。2 つの --quick オプションを myisamchk に設定することもできます。この場合、myisamchk はいくつかのエラー(重複キーなど)でも中止しませんが、.MYD ファイルを修正して解決しようとします。通常、修復処理にディスクの空き容量では足りない場合にのみ、2 つの --quick オプション指定を利用します。その場合、少なくとも myisamchk を実行する前にバックアップを作成してください。

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