Unix の場合、データベースのシンボリックリンクは、まず、空き領域のあるディスクにディレクトリを作成し、次に MySQL データベースディレクトリからそのディレクトリへのシンボリックリンクを作成します。
shell>mkdir /dr1/databases/test
shell>ln -s /dr1/databases/test mysqld-datadir
MySQL は、1
つのディレクトリに対して複数のデータベースをリンクさせることをサポートしていません。データベースディレクトリをシンボリックリンクに置換すると、複数のデータベースへシンボリックリンクを張らない限り、問題なく機能します。
仮に MySQL データディレクトリにデータベース
db1
がある場合に、db1
を指すシンボリックリンク db2
を作成するとします。
shell>cd /path/to/datadir
shell>ln -s db1 db2
これで、db1
のテーブル
tbl_a
が、db2
のテーブル tbl_a
としても表示されます。あるスレッドで
db1.tbl_a
が更新され、別のスレッドで
db2.tbl_a
が更新されると、問題が発生します。
このようにすることが実際に必要な場合は、mysys/mf_format.c
で次のコードを変更する必要があります。
if (flag & 32 || (!lstat(to,&stat_buff) && S_ISLNK(stat_buff.st_mode)))
これを次のようにします。
if (1)
Windows では、-DUSE_SYMDIR
を使用して MySQL
をコンパイルして、ディレクトリへの内部シンボリックリンクを使用できます。これによって、複数のデータベースを複数のディスクに配置できるようになります。
See 項5.6.1.3. 「Windows
上のデータベースに対するシンボリックリンクの使用」。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.