您可以将数据库或表从数据库目录移动到其他位置,并用指向新位置的符号链接替换它们。例如,您可能要这样做,以便将数据库移动到具有更多可用空间的文件系统中,或者通过将表分散到不同的磁盘来提高系统的速度。
对于InnoDB表,请按照第15.6.1.2节“在外部创建表”中的说明,使用语句的DATA DIRECTORY子句CREATE TABLE代替符号链接。此新功能是受支持的跨平台技术。
推荐的方法是将整个数据库目录符号链接到另一个磁盘。Symlink MyISAM表仅是万不得已的方法。
要确定数据目录的位置,请使用以下语句:
SHOW VARIABLES LIKE 'datadir';
在Unix上对数据库使用符号链接
在Unix上,符号链接数据库的方法是首先在某个具有可用空间的磁盘上创建一个目录,然后从MySQL数据目录创建到该目录的软链接。
shell>mkdir /dr1/databases/test
shell>ln -s /dr1/databases/test /path/to/datadir
MySQL不支持将一个目录链接到多个数据库。只要您不在数据库之间建立符号链接,就可以使用符号链接替换数据库目录。假设您db1在MySQL数据目录下有一个数据库 ,然后建立一个db2指向以下内容 的符号链接db1:
shell>cd /path/to/datadir
shell>ln -s db1 db2
其结果是,对于任何表tbl_a中 db1,也似乎是一个表 tbl_a中db2。如果一个客户端更新,db1.tbl_a而另一个客户端更新db2.tbl_a,则可能会出现问题。