将每个数据库存储在不同的目录中

将每个数据库存储在不同的目录中

有没有办法将每个 mysql 数据库存储在单独的目录中?我可以将每个数据库的目录符号链接到 /var/lib/mysql,但我想知道是否有内置方法可以做到这一点。

谢谢

答案1

恐怕没有内置的方法可以做到这一点,mysql 的工作方式只是定义 datadir,然后所有数据库都应该位于其目录中。

如果你想这样做,只需确保运行 mysql 的用户有权访问最终目录,我认为软链接应该没问题。

答案2

令人惊讶的是,单个 MyISAM 表的唯一内置符号链接
是由 CREATE TABLE 命令完成的,如下所示:

CREATE TABLE
(
...
) ENGINE=MyISAM
DATA_DIRECTORY='absolute path of data folder'
INDEX_DIRECTORY='absolute path of index folder';

http://dev.mysql.com/doc/refman/5.0/en/create-table.html 并找到 DATA_DIRECTORY 和 INDEX_DIRECTORY 选项。

只有.frm 文件保留在原始服务器中。

顺便说一句,这些选项在 Windows 版本的 MySQL 中不起作用。这些选项不适用于 InnoDB。

答案3

http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html

启用多个表空间后,InnoDB 会将每个新创建的表存储在其自己的 tbl_name.ibd 文件中在适当的数据库目录中

答案4

看起来,通过变通方法是可行的。

所有数据库分别位于 DATADIR 目录下,按文件夹名称排序。因此,您可以附加新磁盘并将其挂载到按数据库名称排序的文件夹名称。

mysql> create database DatabaseName;


# ls /var/lib/mysql/DatabaseName


# mount /dev/sdb /var/lib/mysql/DatabaseName

相关内容