MySQL InnoDB系統表空間資料檔案配置

eric0435發表於2022-03-17

系統表空間資料檔案配置
系統表空間資料檔案是透過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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2871743/,如需轉載,請註明出處,否則將追究法律責任。

相關文章