innodb_data_file_path用來指定innodb tablespace文件,若是咱們不在My.cnf文件中指定innodb_data_home_dir和innodb_data_file_path那麼默認會在datadir目錄下建立ibdata1 做爲innodb tablespace。5.6.6以後 兩個參數的默認值以下:
show variables like 'innodb_data%';html
[html] view plain copy mysql
+-----------------------+------------------------+ sql
| Variable_name | Value | 數據庫
+-----------------------+------------------------+ ide
| innodb_data_file_path | ibdata1:12M:autoextend | spa
| innodb_data_home_dir | | >>note:雖然不指定innodb_data_home_dir和指定它爲空顯示是同樣的,可是做用確不同,若是不指定那麼全部的innodb tablespace 文件只能存放在datadir目錄下。若是顯示指定爲空,則能夠爲innodb tablespace 文件指定不一樣的路徑 .net
自mysql 5.6.6開始咱們能夠指定多個innodb tablespace 文件(這些文件能夠在相同的路徑下,也能夠在不一樣的路徑下)。可是在爲innodb_data_file_path 指定多個文件時仍是有許多注意事項的,下面我來看一下
1. 在同一個路徑下指定多個innodb tablespace 文件
1)
在my.cnf文件指定以下
[mysqld]
innodb_data_file_path = ibdata1:1G;ibdata2:12M:autoextend:max:500M
note:The autoextend and max attributes can be used only for the last data file in the innodb_data_file_path line.
note:由於沒有指定innodb_data_home_dir,因此ibdata1和ibdata2都在datadir(innodb_data_home_dir默認值爲datadir)目錄下建立
2)
在my.cnf文件指定以下
[mysqld]
innodb_data_home_dir = /data/mysql/mysql3306/data
innodb_data_file_path = ibdata1:1G;ibdata2:12M:autoextend:max:500M
note:能夠顯示的指定innodb tablespace文件的路徑,若是指定innodb_data_home_dir,那麼就不能爲innodb tablespace不一樣文件指定不一樣路徑
2. 在不一樣路徑下指定innodb tablespace
在my.cnf文件下指定
[mysqld]
innodb_data_home_dir =
innodb_data_file_path = ibdata1:12M;/data/mysql/mysql3306/data1/ibdata2:12M:autoextend
xml
note:若是想爲innodb tablespace指定不一樣目錄下的文件,必須指定innodb_data_home_dir =。這個例子中會在datadir下創建ibdata1,在/data/mysql/mysql3306/data1/目錄下建立ibdata2htm
若是我不指定innodb_data_home_dir =,只在my.cnf文件中作以下指定:blog
innodb_data_file_path = ibdata1:12M;/data/mysql/mysql3306/data1/ibdata2:12M:autoextend
而後使用該my.cnf文件進行數據庫初始化的時候,會發現初始化失敗,報錯以下:
[html] view plain copy
2016-03-24 16:58:34 29559 [ERROR] InnoDB: File .//data/mysql/mysql3306/data1/ibdata2: 'create' returned OS error 71. Cannot continue operation
##因此若是想爲innodb tablespace文件指定不一樣路徑,那麼必須在my.cnf文件中指定innodb_data_home_dir =