注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

MySQL5.7:General Tablespaces 初体验  

2016-08-26 11:47:08|  分类: MySQL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
MySQL 5.7 版本 InnoDB 支持新的表空间类型 General Tablespaces ,表空间的物理文件位置可以位于 MySQL data 目录以外,语法如下:

CREATE TABLESPACE `tablespace_name`
  ADD DATAFILE 'file_name.ibd'
  [FILE_BLOCK_SIZE = n]

 下面做个简单演示:

--创建表空间目录

[mysql@db1 mysql]$ mkdir -p /database/mysql/tbs

备注:我这里搭建了 MySQL 主从环境,在创建表空间前主从了点上都先创建表空间目录,如果从库不创建此目录,那么创建表空间时从库会报错,如下:

--错误代码

2016-08-26T03:29:38.779278Z 9 [ERROR] Slave SQL for channel '': Error 'Incorrect File Name '/database/mysql/tbs_test/tbs_test.ibd'.' on query. Default database: 'information_schema'. Query: 'CREATE TABLESPACE `tbs_test` ADD DATAFILE '/database/mysql/tbs_test/tbs_test.ibd' Engine=InnoDB', Error_code: 3121
2016-08-26T03:29:38.779688Z 9 [Warning] Slave: Incorrect File Name '/database/mysql/tbs_test/tbs_test.ibd'. Error_code: 3121
2016-08-26T03:29:38.779751Z 9 [Warning] Slave: The directory does not exist. Error_code: 3121
2016-08-26T03:29:38.779786Z 9 [Warning] Slave: Failed to create TABLESPACE tbs_test Error_code: 1528
2016-08-26T03:29:38.779818Z 9 [Warning] Slave: Table storage engine for 'tbs_test' doesnt have this option Error_code: 1031
2016-08-26T03:29:38.779851Z 9 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'bin-log.000026'position 2339

备注:日志中已经提示了修复方法,只需在备节点上创建相应目录并重启备库实例即可。

--创建表空间

root@localhost:mysql>CREATE TABLESPACE `tbs1` ADD DATAFILE '/database/mysql/tbs/tbs1.ibd' Engine=InnoDB;
Query OK, 0 rows affected (0.12 sec)

root@localhost:information_schema>select * from INNODB_SYS_TABLESPACES where name='tbs1'\G
*************************** 1. row ***************************
         SPACE: 42569
          NAME: tbs1
          FLAG: 2048
   FILE_FORMAT: Any
    ROW_FORMAT: Any
     PAGE_SIZE: 16384
 ZIP_PAGE_SIZE: 0
    SPACE_TYPE: General
 FS_BLOCK_SIZE: 4096
     FILE_SIZE: 655360
ALLOCATED_SIZE: 659456
1 row in set (0.00 sec)


--创建表

root@localhost:francs>CREATE TABLE t1 (id INT PRIMARY KEY) TABLESPACE tbs1 Engine=InnoDB;
Query OK, 0 rows affected (0.06 sec)

备注:以上将表 t1 创建在 General Tablespaces,也可以将现有表 MOVE 到 General Tablespaces。

--ALTER TABLE

root@localhost:francs>select count(*) from test_1;
+----------+
| count(*) |
+----------+
|    10001 |
+----------+
1 row in set (0.14 sec)

root@localhost:francs>alter table test_1 tablespace tbs1;
Query OK, 0 rows affected (1.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

--关于 .isl文件
General Tablespaces 创建后,会在 MySQL DATA 目录中新生成 .isl 文件,文件的内容为文本,记录了 General Tablespaces 对应的文件物理路径。

[mysql@db1 data]$ ll /database/mysql/data/tbs_test.isl 
-rw-r----- 1 mysql mysql 37 Aug 26 11:29 /database/mysql/data/tbs_test.isl

[mysql@db1 data]$ view tbs_test.isl 

/database/mysql/tbs_test/tbs_test.ibd


--参考


  评论这张
 
阅读(38)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016