Pour créer des liens symboliques sur les bases de données, vous devez commencer par créer un dossier sur un disque de destination, puis faire un lien symbolique depuis le dossier de données vers votre dossier de destination.
shell>mkdir /dr1/databases/test
shell>ln -s /dr1/databases/test mysqld-datadir
MySQL n'accepte pas que vous fassiez le lien depuis plusieurs
bases sur le même dossier. Remplacer une base par un lien
symbolique sera correct tant que vous n'essayez pas de faire
des liens symboliques dans la même base. Supposez que vous la
base db1
dans le dossier de données MySQL,
puis que vous fassiez un lien symbolique
db2
qui pointe sur
db1
:
shell>cd /path/to/datadir
shell>ln -s db1 db2
Maintenant, pour toute table tbl_a
de
db1
, il en apparaît aussi
tbl_a
dans db2
. Si un
thread modifie db1.tbl_a
et un autre
db2.tbl_a
, il va y avoir un conflit.
Si vous avez vraiment besoin de cette fonctionnalité, vous
devez changer le code suivant dans le fichier C
mysys/mf_format.c
:
if (!(MyFlags & MY_RESOLVE_LINK) || (!lstat(filename,&stat_buff) && S_ISLNK(stat_buff.st_mode)))
Avant MySQL 4.0, recherchez cette instruction dans le fichier
mysys/mf_format.c
:
if (flag & 32 || (!lstat(to,&stat_buff) && S_ISLNK(stat_buff.st_mode)))
Remplacez l'instruction par :
if (1)
Sous Windows, vous pouvez utiliser des liens internes
symboliques pour relier des bases en compilant MySQL avec
l'option -DUSE_SYMDIR
. Cela vous permettra
de placer vos bases de données sur différentes partitions.
See Section 7.6.1.3, « Utiliser des liens symboliques pour les bases de données sous 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.