Mysql 如何在InnoDB表的挂载分区上更改数据目录?

Mysql 如何在InnoDB表的挂载分区上更改数据目录?,mysql,linux,innodb,myisam,Mysql,Linux,Innodb,Myisam,我用的是5.5.44。我想创建一个InnoDB表,它跨装入的分区存储数据 考虑 我安装了分区/var/log/storage,如下所示: /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 要创建表,我使用以下查询: create table InnoDB_Test(a

我用的是5.5.44。我想创建一个InnoDB表,它跨装入的分区存储数据

考虑 我安装了分区/var/log/storage,如下所示:

/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
要创建表,我使用以下查询:

create table InnoDB_Test(a INT) DATA DIRECTORY='/var/log/storage/MySQL' INDEX DIRECTORY='/var/log/storage/MySQL' engine=InnoDB;
但它将数据存储在/var/lib/mysql中,而不是/var/log/storage/mysql

如果我尝试使用以下查询使用MyISAM,结果与预期的一样:

create table MyISAM_Test(a INT) DATA DIRECTORY='/var/log/storage/MySQL' INDEX DIRECTORY='/var/log/storage/MySQL' engine=MyISAM;
如何在InnoDB中将数据目录更改为挂载分区? 为什么数据分区在MyISAM中工作&而不是在InnoDB中

提前感谢您。

我想这样做(用于分区),但mysql文档说“不”

以下是本页的相关部分:

19.1 MySQL分区概述

使用InnoDB存储引擎为表定义分区时,数据目录和索引目录选项无效

因此,如果您的存储引擎使用MyISAM,它将起作用

你的选择是:

  • 全局指定mysql命令行选项中的数据目录 或my.cnf文件指向/var/log/storage。例如 --datadir=/var/log/storage
  • 将整个mysql数据目录移动到/dev/sda6并将其装载到/var/lib/mysql。这与第一个选项几乎相同,只是需要保留路径/var/lib/mysql
  • 为innodb数据创建一个表空间目录,并将/dev/sda6装载到其中
  • 对于第三个选项,要将innodb数据放在单独的目录中,可以配置innodb为每个表创建一个文件

    # my.cnf
    [mysqld]
    innodb_file_per_table=1
    
    一旦您重建了db/表,您会发现为您的表空间创建了一个目录(例如/var/lib/mysql/mydb),每个表都有单独的文件

    然后可以将表空间目录和文件复制到sda6,并将/dev/sda6装载到/var/lib/mysql/mydb


    显然,mysql server 5.6不受此限制。

    请帮助我,我找不到解决方案。。