5. 在Datadir目录外创建单独表空间
要在MySQL dadadir之外的位置创建单独表空间,请使用该子句:
DATA DIRECTORY = '/path'
在目标目录中,MySQL会创建一个与数据库名称对应的子目录,并在其中创建新表的xx.ibd
文件。在MySQL DATADIR目录中,会创建一个xx.isl文件,文件内容包含表的路径名。MySQL将’**.isl’文件视为符号链接。
示例:
# cd /data
# mkdir mysqldata
# chown mysql:mysql mysqldata/
root@localhost [test] 11:14:46>SHOW VARIABLES LIKE 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
root@localhost [test] 11:14:48>create table x1(c1 int primary key) data directory = '/data/mysqldata';
Query OK, 0 rows affected (0.06 sec)
# cd /data/mysqldata
# ls -l
total 0
drwxr-x--- 2 mysql mysql 20 Aug 10 11:15 test
# cd test
# ls -l
total 96
-rw-r----- 1 mysql mysql 98304 Aug 10 11:15 x1.ibd
# cd /data/mysql/mysql3306/data/test
# ls -l
total 144
-rw-r----- 1 mysql mysql 8622 Aug 9 17:03 account.frm
-rw-r----- 1 mysql mysql 114688 Aug 10 09:28 account.ibd
-rw-r----- 1 mysql mysql 67 Aug 7 10:15 db.opt
-rw-r----- 1 mysql mysql 8556 Aug 10 11:15 x1.frm
-rw-r----- 1 mysql mysql 27 Aug 10 11:15 x1.isl
# cat x1.isl
/data/mysqldata/test/x1.ibd
也可以在创建表时指定innodb_file_per_table关键字,使用此方式创建时innodb_file_per_table
参数不必启用
mysql> CREATE TABLE t2 (c1 INT PRIMARY KEY) TABLESPACE = innodb_file_per_table
DATA DIRECTORY = '/data/mysqldata';