龙空技术网

MySQL专题和技巧——系统表空间增加文件

贺浦力特 170

前言:

今天同学们对“mysql扩展表空间”大致比较看重,看官们都需要分析一些“mysql扩展表空间”的相关知识。那么小编也在网络上搜集了一些关于“mysql扩展表空间””的相关资讯,希望我们能喜欢,看官们快快来了解一下吧!

系统表空间是更改缓冲区的存储区域。如果表是在系统表空间中创建的,而不是在每个表或通用表空间中的文件中创建,那么它也可能包含表和索引数据。在以前的MySQL版本中,系统表空间包含InnoDB数据字典。在MySQL 8.0中,InnoDB将元数据存储在MySQL数据字典中。在以前的MySQL版本中,系统表空间也包含双写缓冲区存储区域。从MySQL 8.0.20开始,此存储区域位于单独的双写文件中。

系统表空间可以有一个或多个数据文件。默认情况下,在数据目录中创建一个名为ibdata1的系统表空间数据文件。系统表空间数据文件的大小和数量由innodb_data_file_path启动选项定义。

9de7bb31d0644e7393039222babfed10 欢迎收藏。

基本步骤

1. 停止mysql服务

2. 备份配置文件,便于出现问题好回退

3. 编辑 innodb_data_file_path 值, 格式为 文件1:大小;文件2:大小;...文件N:大小:自动扩展

4. 启动mysql服务

5. 观察mysql错误日志是否有错

演示系统表空间加一个文件

1. 查看表空间信息, 表空间模式

ON表示独立表空间, OFF表示共享表空间

mysql> show variables like '%innodb_data_file_path%';+-----------------------+------------------------+| Variable_name         | Value                  |+-----------------------+------------------------+| innodb_data_file_path | ibdata1:12M:autoextend |+-----------------------+------------------------+1 row in set (0.01 sec) mysql> show variables like '%innodb_file_per_table%';+-----------------------+-------+| Variable_name         | Value |+-----------------------+-------+| innodb_file_per_table | ON    |+-----------------------+-------+1 row in set (0.01 sec)

2. 修改配置文件,增加新的表空间 默认 ibdata1:12M:autoextend

innodb_data_file_path=ibdata1:24M;ibdata2:12M:autoextend

3. 重新启动 错误提示: ibdata1数据文件size设置大小和系统不匹配

[ERROR] [MY-012264] [InnoDB] The innodb_system data file './ibdata1' is of a different size 768 pages (rounded down to MB) than the 1536 pages specified in the .cnf file!

4. 查看表空间数据文件的大小 ls -lh

# ls -lh ibdata1 -rw-r-----. 1 mysql mysql 12M Apr 20 03:37 ibdata1

5. 重新修改配置参数:

innodb_data_file_path=ibdata1:12M;ibdata2:12M:autoextend

6. 也可以写绝对路径指定异地文件:

innodb_data_file_path=/data/ibdata1:12M;/data/ibdata2:10M;/data/ibdata3:10M;/data/ibdata4:10M:autoextend

注意:

对于已有的表空间数据文件的size,必须按照系统查看的size设置,否则报错 (也可以将表空间建立在不同的目录下如: /data/ibdata3:10M)

autoextend属性只能在innodb_data_file_path设置的最后一个数据文件中指定,对于系统表空间现有系统表空间的大小减少是不支持的。要实现更小的系统表空间,唯一的选择是将数据从备份恢复。Mysql里删除数据是不释放空间的

7.查看tablespace,新的tablespace增加成功

mysql> show variables like '%innodb_data_file_path%';+-----------------------+------------------------------------+| Variable_name         | Value                              |+-----------------------+------------------------------------+| innodb_data_file_path | ibdata1:12M;ibdata2:12M:autoextend |+-----------------------+------------------------------------+

标签: #mysql扩展表空间