我正在使用MariaDB 5.5.44。我想创建InnoDB表,它在已安装的分区上存储数据。
考虑 我安装了分区 / var / log / storage ,如下所示:
AnyIn
要创建表格,我使用以下查询:
Exists
但是它将数据存储在 / var / lib / mysql 而不是 / var / log / storage / MySQL
相同如果我尝试使用MyISAM使用以下查询&它按预期工作:
/dev/sda2 6.5G 3.6G 2.6G 59% /
/dev/sda1 395M 32M 338M 9% /boot
/dev/sda6 5.3G 22M 5.0G 1% /var/log/storage
如何在InnoDB中将数据目录更改为已挂载的分区? 为什么数据分区在MyISAM&不在InnoDB?
提前谢谢。
答案 0 :(得分:1)
我想这样做(用于分区)但是mysql文档说" No"。
以下是此页面的相关部分:https://dev.mysql.com/doc/refman/5.5/en/partitioning-overview.html
19.1 MySQL中的分区概述
使用InnoDB存储引擎为表定义分区时,DATA DIRECTORY和INDEX DIRECTORY选项无效。
如果您的存储引擎使用的是MyISAM,它就可以正常工作。
您的选择是:
对于第三个选项,要将innodb数据放在一个单独的目录中,你可以配置innodb来为每个表创建一个文件
# my.cnf
[mysqld]
innodb_file_per_table=1
重建db / tables后,您会发现表空间的目录(例如/ var / lib / mysql / mydb)将使用每个表的单个文件创建。
然后你可以将表空间目录和文件复制到sda6并将/ dev / sda6挂载到/ var / lib / mysql / mydb
显然,mysql server 5.6不会受到这种限制。