Unix の場合、データベースのシンボリックリンクは、まず、空き領域のあるディスクにディレクトリを作成し、次に MySQL データベースディレクトリからそのディレクトリへのシンボリックリンクを作成します。
shell>mkdir /dr1/databases/test
shell>ln -s /dr1/databases/test
/path/to/datadir
MySQL は、1
つのディレクトリに対して複数のデータベースをリンクさせることをサポートしていません。データベースディレクトリをシンボリックリンクに置換すると、複数のデータベースへシンボリックリンクを張らないかぎり、問題なく機能します。仮に
MySQL データディレクトリにデータベース
db1
がある場合に、db1
を指すシンボリックリンク
db2
を作成するとします。
shell>cd
shell>/path/to/datadir
ln -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)