Unix の場合、データベースのシンボリックリンクは、まず、空き領域のあるディスクにディレクトリを作成し、次に MySQL データベースディレクトリからそのディレクトリへのシンボリックリンクを作成します。
shell>mkdir /dr1/databases/testshell>ln -s /dr1/databases/test/path/to/datadir
MySQL は、1
つのディレクトリに対して複数のデータベースをリンクさせることをサポートしていません。データベースディレクトリをシンボリックリンクに置換すると、複数のデータベースへシンボリックリンクを張らない限り、問題なく機能します。
仮に MySQL データディレクトリにデータベース
db1がある場合に、db1を指すシンボリックリンク
db2を作成するとします。
shell>cdshell>/path/to/datadirln -s db1 db2
これで、db1のテーブル
tbl_aが、db2 のテーブル tbl_a
としても表示されます。あるスレッドで
db1.tbl_a が更新され、他のクライアントが
db2.tbl_aに更新すると、問題が発生します。
ただし、実際にこれを実行しなければいけないとき、ソースファイルであるmysys/my_symlink.cを変更することで可能となります。その場合、以下のステートメントを参照してください。
if (!(MyFlags & MY_RESOLVE_LINK) ||
(!lstat(filename,&stat_buff) && S_ISLNK(stat_buff.st_mode)))
このステートメントを以下に変えます。
if (1)
