MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

15.6.3.6 サーバーがオフラインのときのテーブルスペースファイルの移動

起動時にテーブルスペースファイルをスキャンするディレクトリを定義する innodb_directories オプションでは、サーバーがオフラインのときにテーブルスペースファイルを新しい場所に移動またはリストアできます。 起動時には、検出されたテーブルスペースファイルがデータディクショナリで参照されるファイルのかわりに使用され、再配置されたファイルを参照するようにデータディクショナリが更新されます。 スキャンによって重複するテーブルスペースファイルが検出された場合、起動は失敗し、同じテーブルスペース ID に対して複数のファイルが見つかったことを示すエラーが表示されます。

innodb_data_home_dirinnodb_undo_directory および datadir の構成オプションで定義されたディレクトリは、innodb_directories 引数値に自動的に追加されます。 これらのディレクトリは、innodb_directories オプションが明示的に指定されているかどうかに関係なく、起動時にスキャンされます。 これらのディレクトリを暗黙的に追加すると、innodb_directories 設定を構成せずに、システムテーブルスペースファイル、データディレクトリまたは undo テーブルスペースファイルを移動できます。 ただし、ディレクトリが変更された場合は設定を更新する必要があります。 たとえば、データディレクトリを再配置した後、サーバーを再起動する前に --datadir 設定を更新する必要があります。

innodb_directories オプションは、起動コマンドまたは MySQL オプションファイルで指定できます。 一部のコマンドインタプリタではセミコロン (;) は特殊文字として解釈されるため、引数値の前後に引用符が使用されます。 (たとえば UNIX シェルでは、これはコマンド終端記号として扱われます。)

起動コマンド:

mysqld --innodb-directories="directory_path_1;directory_path_2"

MySQL オプションファイル:

[mysqld]
innodb_directories="directory_path_1;directory_path_2"

次の手順は、個々の file-per-table および general tablespace ファイル、system tablespace ファイル、undo tablespace ファイルまたはデータディレクトリの移動に適用できます。 ファイルまたはディレクトリを移動する前に、次の使用上のノートを確認してください。

  1. サーバーを停止します。

  2. テーブルスペースファイルまたはディレクトリを移動します。

  3. 新しいディレクトリを InnoDB で認識できるようにします。

    • 個々の file-per-table または general tablespace ファイルを移動する場合は、innodb_directories 値に不明なディレクトリを追加します。

      • innodb_data_home_dirinnodb_undo_directory および datadir の構成オプションで定義されたディレクトリは、innodb_directories 引数値に自動的に追加されるため、これらを指定する必要はありません。

      • file-per-table テーブルスペースファイルは、スキーマと同じ名前のディレクトリにのみ移動できます。 たとえば、actor テーブルが sakila スキーマに属している場合、actor.ibd データファイルは sakila というディレクトリにのみ移動できます。

      • 一般テーブルスペースファイルは、データディレクトリまたはデータディレクトリのサブディレクトリに移動できません。

    • システムテーブルスペースファイル、undo テーブルスペースまたはデータディレクトリを移動する場合は、必要に応じて innodb_data_home_dirinnodb_undo_directory および datadir の設定を更新します。

  4. サーバーを再起動します。

使用上の注意