innodb有两种表空间,共享表空间和独立表空间,表空间相关的两个参数有:
mysql> show variables like 'innodb_data%';
+-----------------------+------------------------+
| Variable_name | Value |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:12M:autoextend |
| innodb_data_home_dir | |
+-----------------------+------------------------+
innodb_data_home_dir指明数据文件的父目录,默认的是服务器的数据目录。
innodb_data_file_path指明表空间组成的数据文件。
要重新配置表空间,需要先停止mysql服务器,删除变空间和日志文件,在使用新的配置重新启动服务器。
查看innodb表空间剩余大小
mysql> show table status like 'user'\G
*************************** 1. row ***************************
Name: user
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 5
Avg_row_length: 3276
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 0
Auto_increment: 33
Create_time: 2015-02-10 17:48:21
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment: 用户表
1 row in set (0.01 sec)
我这个在comment中没有显示,不知道是为什么??
在表空间满的时候,可以添加数据文件,在配置文件中添加
innodb_data_file_path=ibdata1:79M;ibdata2:12M:autoextend,添加这个后,无法启动mysql了,这个启动的条件是什么?
设置独立表空间
使用--innodb-file-per-table选项启动mysql,每个表有个。frm和.ibd文件,对于之后创建的表起作用。