MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  Unix 上の MyISAM へのシンボリックリンクの使用

8.12.2.2 Unix 上の MyISAM へのシンボリックリンクの使用

注記

ここで説明するシンボリックリンクのサポートと、それを制御する --symbolic-links オプションは非推奨になりました。これらは将来のバージョンの MySQL で削除される予定です。 また、このオプションはデフォルトで無効になっています。

シンボリックリンクは、MyISAM テーブルに対してのみ完全にサポートされています。 ほかのストレージエンジンのテーブルで使用されているファイルの場合、シンボリックリンクを使用しようとすると、未知の問題が発生することがあります。 InnoDB テーブルの場合は、代わりにセクション15.6.1.2「外部でのテーブルの作成」に説明する代替の技法を使用します。

完全に動作する realpath() 呼び出しがないシステムでは、テーブルのシンボリックリンクを作成しないでください。 (Linux と Solaris では realpath() をサポートしています)。 システムでシンボリックリンクをサポートしているかどうかを判断するには、次のステートメントを使用して、have_symlink システム変数の値をチェックします。

SHOW VARIABLES LIKE 'have_symlink';

MyISAM テーブルのシンボリックリンクの処理は次のように機能します。

  • データディレクトリには、常にデータ (.MYD) ファイルとインデックス (.MYI) ファイルがあります。 データファイルとインデックスファイルは、ほかの場所に移動し、データディレクトリ内でシンボリックリンクによって置き換えることができます。

  • データファイルとインデックスファイルは、独立して別々のディレクトリへのシンボリックリンクを作成できます。

  • 実行中の MySQL サーバーにシンボリックリンクの作成を実行するように指示するには、CREATE TABLEDATA DIRECTORY および INDEX DIRECTORY オプションを使用します。 セクション13.1.20「CREATE TABLE ステートメント」を参照してください。 または、mysqld が実行中でない場合は、コマンド行から ln -s を使用して、シンボリックリンクの作成を手動で実行できます。

    注記

    DATA DIRECTORY および INDEX DIRECTORY オプションのいずれか、または両方で使用されるパスには、MySQL data ディレクトリを含めることができません。 (Bug #32167)

  • myisamchk が、シンボリックリンクをデータファイルやインデックスファイルに置き換えません。 それは、シンボリックリンクが指しているファイルに対して直接作用します。 一時ファイルはすべてデータファイルやインデックスファイルが配置されているディレクトリに作成されます。 同じことが ALTER TABLEOPTIMIZE TABLE、および REPAIR TABLE ステートメントにも当てはまります。

  • 注記

    シンボリックリンクを使用しているテーブルを削除すると、シンボリックリンクとシンボリックリンクが指しているファイルの両方が削除されます。 これは、mysqldroot オペレーティングシステムユーザーとして実行しないか、オペレーティングシステムユーザーに MySQL データベースディレクトリへの書込みアクセス権を付与しないことが非常によい理由です。

  • ALTER TABLE ... RENAME または RENAME TABLE を使用してテーブルの名前を変更し、テーブルを別のデータベースに移動しない場合、データベースディレクトリのシンボリックリンクの名前が新しい名前に変更され、データファイルとインデックスファイルもそれに従って名前が変更されます。

  • ALTER TABLE ... RENAME または RENAME TABLE を使用してテーブルを別のデータベースに移動すると、テーブルが別のデータベースディレクトリに移動されます。 テーブル名が変更された場合、新しいデータベースディレクトリ内のシンボリックリンクの名前が新しい名前に変更され、データファイルとインデックスファイルもそれに従って名前が変更されます。

  • シンボリックリンクを使用していない場合、--skip-symbolic-links オプションを付けて mysqld を起動し、だれも mysqld を使用して、データディレクトリ外のファイルを削除したり名前を変更したりできないようにします。

これらのテーブルシンボリックリンクの操作はサポートされていません。

  • ALTER TABLEDATA DIRECTORY および INDEX DIRECTORY テーブルオプションを無視します。


関連キーワード:  テーブル, インデックス, InnoDB, データベース, ステートメント, TABLE, ディレクトリ, データ, 名前, 結合