1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > mysql之 表数据存放路径非datadir目录

mysql之 表数据存放路径非datadir目录

时间:2019-05-12 11:21:41

相关推荐

mysql之 表数据存放路径非datadir目录

假如,新建一张表,并让该表的存储路径 不是默认的/path/to/datadir/dbname 。而是 指定存储的位置 应该如何处理?

方法一

shell> mkdir /Generalt1

shell> chown mysql.mysql /Generalt1

mysql> create table test_ger1 (a int) data directory='/Generalt1';

Query OK, 0 rows affected (0.15 sec)

shell> cd /Generalt1

shell> ll test_ger1* # 在datadir 的 test 目录下

-rw-r-----. 1 mysql mysql 8554 Jan 3 16:41 test_ger1.frm

-rw-r-----. 1 mysql mysql 36 Jan 3 16:41 test_ger1.isl # 这是链接文件,链接到上面的ibd文件

shell> cat test_ger1.isl # 一个文本文件,内容就是idb文件的路径

/Generalt1/test/test_ger1.ibd

方法二

在mysql 5.7之后,可以使用`通用表空间`

语法:

CREATE TABLESPACE tablespace_name ADD DATAFILE 'file_name' [FILE_BLOCK_SIZE = value] [ENGINE [=] engine_name]

-- 1: 创建一个通用表空间

mysql> create tablespace ger_space add datafile '/Generalt1/ger_space.ibd' file_block_size=8192;

Query OK, 0 rows affected (0.07 sec)

-- datafile 指定存储路径后,在datadir下会产生一个isl文件,该文件的内容为General space的ibd文件的路径

-- 如果datafile不指定路径,则ibd文件默认存储在datadir目录下,且不需要isl文件了

mysql> create tablespace ger_space2 add datafile 'ger_space2.ibd' file_block_size=8192;

Query OK, 0 rows affected (0.06 sec)

shell> ll ger*

-rw-r-----. 1 mysql mysql 32768 Jan 3 16:51 ger_space2.ibd # 未指定路径,存放于datadir目录

-rw-r-----. 1 mysql mysql 26 Jan 3 16:50 ger_space.isl # 指定了其他路径,存在isl链接文件

shell> cat ger_space.isl

/Generalt1/ger_space.ibd # ibd文件真实存在的路径

mysql> select * from information_schema.innodb_sys_tablespaces where name='ger_space'\G

*************************** 1. row ***************************

SPACE: 96

NAME: ger_space

FLAG: 2304

FILE_FORMAT: Any

ROW_FORMAT: Any

PAGE_SIZE: 8192 -- page_size是8k

ZIP_PAGE_SIZE: 0

SPACE_TYPE: General -- General类型

FS_BLOCK_SIZE: 0

FILE_SIZE: 18446744073709551615

ALLOCATED_SIZE: 2

COMPRESSION: None

1 row in set (0.00 sec)

-- 2: 创建表

mysql> create table test_ger2 (a int) tablespace=ger_space;

Query OK, 0 rows affected (0.11 sec)

shell> ll test_ger* # 在datadir 的 test 目录下

-rw-r-----. 1 mysql mysql 8554 Jan 3 16:41 test_ger1.frm

-rw-r-----. 1 mysql mysql 36 Jan 3 16:41 test_ger1.isl

-rw-r-----. 1 mysql mysql 8554 Jan 3 17:09 test_ger2.frm # 仅有一个frm文件

shell> ll /Generalt1/

total 52

drwxr-x---. 2 mysql mysql 4096 Jan 3 16:41 test

-rw-r-----. 1 mysql mysql 49152 Jan 3 17:09 ger_space.ibd # test_ger2的ibd文件其实存储在ger_space.ibd的通用表空间中

mysql> create table test_ger3 (a int) tablespace=ger_space; -- test_ger3 也存放在ger_space.ibd中

Query OK, 0 rows affected (0.09 sec)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。