最近在考MySQL 8.0的OCP ,开个专题专门查漏补缺下
只是做备忘,有的概念只是一笔带过,具体可自行搜索
基于8.0.26
这期来介绍表空间,以下都为Innodb表空间,首先是系统表空间(System Tablespace)
只要有如下内容存放在系统表空间
以前的版本还包含如下内容
系统表空间可以包含一个或多个数据文件,默认情况下会在数据目录建一个ibdata1的文件作为数据文件,大小和个数由innodb_data_file_path 参数决定
可以使用如下方法对数据文件进行扩容
将数据文件设为自动扩展,注意autoextend只能放在最后一个数据文件后面,更改后需要重启数据库
每次自动扩展的大小由innodb_autoextend_increment 参数控制
innodb_data_file_path=ibdata1:10M:autoextend
也可以通过添加数据文件的方式扩容
修改之前:
innodb_data_file_path = /ibdata/ibdata1:10M:autoextend
修改之后:
innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
由于系统表空间不会自动缩小,再删除数据后如果需要缩容,MySQL不支持直接减少大小,需要:
最后还支持使用裸设备进行扩容,命令如下
[mysqld] i
nnodb_data_home_dir= innodb_data_file_path=/dev/hdd1:3Gnewraw;/dev/hdd2:2Gnewraw
启动成功后需要将new关键字去掉,然后重启数据
[mysqld]
innodb_data_home_dir= innodb_data_file_path=/dev/hdd1:3Graw;/dev/hdd2:2Graw
https://dev.mysql.com/doc/refman/5.6/en/innodb-system-tablespace.html