系统表空间数据文件配置
系统表空间数据文件是通过innodb_data_file_path和innodb_data_home_dir配置选项来进行配置的。
innodb_data_file_path配置选项被用来配置InnoDB系统表空间数据文件。innodb_data_file_path应该是一个或多个数据文件的规范列表。如果要命名多个数据文件,使用分号(;)来进行分隔:
innodb_data_file_path=datafile_spec1[;datafile_spec2]…
例如,下面的设置创建一个最小大小的系统表空间:
[mysqld] innodb_data_file_path=ibdata1:12M:autoextend
上面的设置配置一个12MB大小命名为ibdata1且自动扩展的数据文件。这里没有指定文件路径,因此,InnoDB将在MySQL数据目录中创建该文件。
数据文件大小可以通过K,M,或G后缀来指示KB,MG或GB。
如果一个表空间包含一个名为ibdata1固定大小为50MB和一个名为ibdata2大小为50MB自动扩展的数据文件可以进行以下配置:
[mysqld] innodb_data_file_path=ibdata1:50;ibdata2:50:autoextend
数据文件规范的完整语法包括文件名,文件大小和多个选项属性:
file_name:file_size[:autoextend[:max:max_file_size]]
autoexten和max属性只能用于innodb_data_file_path行中的最后一个数据文件
如果对最后一个数据文件指定了autoextend,当表空间中没有可用空间时InnoDB会扩展数据文件大小。默认情况下是一次扩展64MB。为了修改增量,可以修改innodb_autoextend_increment系统变量。
如果存储表空间数据文件的磁盘空间填满,可以在其实磁盘上给表空间增加数据文件。
InnoDB不知道文件系统的最大文件大小,因此要注意文件系统的最大文件大小,比如2GB。为了给自动扩展的数据文件指定一个最大大小,在autoextend属性后面使用max属性。只在限制磁盘使用至关重要的情况下使用max属性,因为超过最大大小会导致致命的错误,可能包括崩溃。下面的设置允许ibdata1增长到限制所指定的500MB:
[mysqld] innodb_data_file_path=ibdata1:12M:autoextend:max:500M
默认情况下InnoDB在MySQL数据目录(datadir)中创建表空间文件。为了显式指定存储位置,使用innodb_data_home_dir选项。例如,为了在名为myibdata目录中创建两个名为ibdata1和ibdata2的数据文件,使用如下配置:
[mysqld] innodb_data_home_dir=/path/to/myibdata/ innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend
注意:在给innodb_data_home_dir指定值时需要使用斜杆。
InnoDB不会创建目录,因此确保在启动MySQL服务器之前指定的myibdata目录已经存在。还要确保MySQL服务器对所指定的目录有正确的权限来创建文件。更通俗地说,服务器必须在需要创建数据文件的任何目录中具有访问权限。
InnoDB通过将innodb_data_home_dir的值与数据文件名进行文本连接来形成每个数据文件的目录路径。如果在my.cnf中没有指定innodb_data_home_dir选项,那么默认值是“dot”目录./,意思是MySQL数据目录。(MySQL服务器在开始执行时将其当前工作目录更改为数据目录。)
如果将innodb_data_home_dir指定为空字符串,则可以为innodb_data_file_path值中列出的数据文件指定绝对路径。下面的示例等价于上面的设置:
[mysqld] innodb_data_home_dir= innodb_data_file_path=/path/to/myibdata/ibdata1:50M;/path/to/myibdata/ibdata2:50M:autoextend