Using Symbolic Links for Databases on Unix
On Unix, the way to symlink a database is first to create a directory on some disk where you have free space and then to create a symlink to it from the MariaDB data directory.
shell>mkdir /dr1/databases/test
shell>ln -s /dr1/databases/test
/path/to/datadir
MySQL does not support linking one directory to multiple databases. Replacing a database directory with a symbolic link works as long as you do not make a symbolic link between databases. Suppose that you have a database db1
under the MariaDB data directory, and then make a symlink db2
that points to db1
:
shell>cd
shell>/path/to/datadir
ln -s db1 db2
The result is that, or any table tbl_a
in db1
, there also appears to be a table tbl_a
in db2
. If one client updates db1.tbl_a
and another client updates db2.tbl_a
, problems are likely to occur.
However, if you really need to do this, it is possible by altering the source file mysys/my_symlink.c
. Look for the following statement:
if (!(MyFlags & MY_RESOLVE_LINK) || (!lstat(filename,&stat_buff) && S_ISLNK(stat_buff.st_mode)))
Change the statement to this: