MySQL InnoDB系统表空间数据文件配置

系统表空间数据文件配置
系统表空间数据文件是通过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

发表评论

电子邮件地址不会被公开。