5. 在Datadir目录外创建单独表空间

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';
posted @ 2018-08-13 17:29  DB-Engineer  阅读(109)  评论(0编辑  收藏  举报