![将每个数据库存储在不同的目录中](https://linux22.com/image/537222/%E5%B0%86%E6%AF%8F%E4%B8%AA%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AD%98%E5%82%A8%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E7%9B%AE%E5%BD%95%E4%B8%AD.png)
有没有办法将每个 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