Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


14.8.2.1 InnoDB が起動されたときの互換性チェック

InnoDB は、ib-file セットを開いたときに発生する可能性のあるクラッシュまたはデータ破損を回避するために、その ib-file セット内で使用されているファイル形式を完全にサポートできることをチェックします。システムがクラッシュまたは高速シャットダウン (つまり、innodb_fast_shutdown が 0 より大きい) のあとに再起動された場合は、現在のソフトウェアにとっては新しすぎる形式のデータ構造 (Redo または Undo エントリや、二重書き込みページなど) がディスク上に存在する可能性があります。これらのデータ構造にアクセスすると、リカバリプロセス中に、データファイルの重大な破損が発生する場合があります。ファイル形式の起動チェックは、どのリカバリプロセスが開始されるよりも先に実行されるため、新しいテーブルとの一貫性の問題や MySQL サーバーの起動時の問題が回避されます。

バージョン InnoDB 1.0.1 から、システムテーブルスペースは、ib-file セットの一部であるいずれかのテーブルスペース内のいずれかのテーブルによって使用されている最高のファイル形式の識別子またはタグを記録します。このファイル形式タグに対するチェックは、構成パラメータ innodb_file_format_check (デフォルトでは ON) によって制御されます。

システムテーブルスペース内のファイル形式タグが、現在実行中の特定のソフトウェアによってサポートされる最高のバージョンより新しいか、または高い値であり、かつ innodb_file_format_checkON である場合は、サーバーが起動されたときに次のエラーが発行されます。

InnoDB: Error: the system tablespace is in a
file format that this version doesn't support

innodb_file_format をファイル形式名に設定することもできます。それにより、指定されたファイル形式が現在のソフトウェアでサポートされていない場合は InnoDB が起動されなくなります。また、高位境界値も指定した値に設定されます。innodb_file_format_check を設定する機能は、ib-file セット内のすべてのテーブルを手動でダウングレードする場合 (Downgrading the InnoDB Storage Engineで説明されています) に (InnoDB の将来のリリースで) 役立ちます。それにより、あとで古いバージョンの InnoDB を使用して ib-file セットにアクセスする場合は、起動時のファイル形式のチェックを使用できます。

一部の限られた状況では、サーバーを起動し、新しすぎる形式 (使用しているソフトウェアではサポートされていない形式) の ib-file セットを使用することが必要になる場合があります。構成パラメータ innodb_file_format_checkOFF に設定すると、InnoDB はデータベースを開きますが、エラーログに次の警告メッセージを発行します。

InnoDB: Warning: the system tablespace is in a
file format that this version doesn't support
注記

これによりリカバリプロセスの実行が許可され、前回のシャットダウンがクラッシュまたは高速シャットダウンであった場合はデータベースが破損する可能性があるため、これは非常に危険な設定です。innodb_file_format_checkOFF に設定するのは、前回のシャットダウンが innodb_fast_shutdown=0 で実行されたことが確実である場合だけにし、基本的にリカバリプロセスが発生しないようにしてください。将来のリリースでは、このパラメータ設定は OFF から UNSAFE に名前が変更される可能性があります。(ただし、追加のファイル形式をサポートする InnoDB の新しいリリースが公開されるまでは、起動チェックを無効にしたとしても実際には安全です。)

パラメータ innodb_file_format_check は、データベースが開かれたときの動作にのみ影響を与え、そのあとには影響を与えません。逆に、パラメータ innodb_file_format (これは、特定の形式を有効にします) は、有効になっている形式で新しいテーブルを作成できるかどうかだけを決定し、データベースを開くことができるかどうかには影響を与えません。

ファイル形式タグは高位境界値であるため、より高い形式のテーブルが作成されるか、または既存のテーブルが読み取りまたは書き込みのためにアクセスされる (その形式がサポートされていると仮定します) と、サーバーが起動されたあとに増加します。実行中のソフトウェアがサポートしている形式より高い形式の既存のテーブルにアクセスした場合は、セクション14.8.2.2「テーブルが開かれたときの互換性チェック」で説明されているように、システムテーブルスペースのタグは更新されませんが、テーブルレベルの互換性チェックが適用されます (また、エラーが発行されます)。高位境界値が更新されると常に innodb_file_format_check の値も更新されるため、コマンド SELECT @@innodb_file_format_check; では、現在開いている ib-file セット内のテーブルによって使用され、現在実行中のソフトウェアによってサポートされることがわかっている最新のファイル形式の名前が表示されます。

この動作をもっとも適切に示すために、表14.4「InnoDB データファイルの互換性および関連する InnoDB パラメータ」で説明されているシナリオを考えてみます。ある将来のバージョンの InnoDB が Cheetah 形式をサポートし、ib-file セットがそのバージョンで使用されてきたとします。

表 14.4 InnoDB データファイルの互換性および関連する InnoDB パラメータ

innodb ファイル形式のチェック innodb ファイル形式 ib-file セットで使用される最高のファイル形式 InnoDB によってサポートされる最高のファイル形式 結果
OFF Antelope または Barracuda Barracuda Barracuda データベースを開くことができます。Antelope または Barracuda ファイル形式を必要とするテーブルを作成できます
OFF Antelope または Barracuda Cheetah Barracuda データベースには新しすぎる形式のファイルが含まれているため、データベースを開くと警告が表示されます。Antelope または Barracuda ファイル形式のテーブルを作成できます。Cheetah 形式のテーブルにはアクセスできません
OFF Cheetah Barracuda Barracuda データベースを開くことができません。innodb_file_format を Cheetah に設定できません
ON Antelope または Barracuda Barracuda Barracuda データベースを開くことができます。Antelope または Barracuda ファイル形式のテーブルを作成できます
ON Antelope または Barracuda Cheetah Barracuda データベースには新しすぎる形式 (Cheetah) のファイルが含まれているため、データベースを開くことができません
ON Cheetah Barracuda Barracuda データベースを開くことができません。innodb_file_format を Cheetah に設定できません


User Comments
Sign Up Login You must be logged in to post a comment.