--from mysql 官方文檔
添加和刪除InnoDB數據和日志文件
這一節描述在InnoDB表空間耗盡空間之時,或者你想要改變日志文件大小之時,你可以做的一些事情。
最簡單的,增加InnoDB表空間大小的方法是從開始配置它為自動擴展的。為表空間定義裡的最後一個數據文件指定autoextend屬性。然後在文件耗盡空間之時,InnoDB以8MB為 增量自動增加該文件的大小。增加的大小可以通過設置innodb_autoextend_increment值來配置,這個值以MB為單位,默認的是8。
作為替代,你可以通過添加另一個數據文件來增加表空間的尺寸。要這麼做的話,你必須停止MySQL服務器,編輯my.cnf文件 ,添加一個新數據文件到innodb_data_file_path的末尾,然後再次啟動服務器。
如果最後一個數據文件是用關鍵字autoextend定義的,編輯my.cnf文件的步驟必須考慮最後一個數據文件已經增長到多大。獲取數據文件的尺寸,把它四捨五入到最接近乘積1024 × 1024bytes (= 1MB),然後在innodb_data_file_path中明確指定大致的尺寸。然後你可以添加另一個數據文件。記得只有innodb_data_file_path裡最後一個數據可以被指定為自動擴展。
作為一個例子。假設表空間正好有一個自動擴展文件ibdata1:
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:10M:autoextend
假設這個數據文件過一段時間已經長到988MB。下面是添加另一個總擴展數據文件之後的配置行:
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
當你添加一個新文件到表空間的之後,請確信它並不存在。當你重啟服務器之時,InnoDB創建並初始化這個文件。
當前,你不能從表空間刪除一個數據文件。要增加表空間的大小,使用如下步驟:
1. 使用mysqldump轉儲所有InnoDB表。
2. 停止服務器。
3. 刪除所有已存在的表空間文件。
4. 配置新表空間。
5. 重啟服務器。
6. 導入轉儲文件。
如果你想要改變你的InnoDB日志文件的數量和大小,你必須要停止MySQL服務器,並確信它被無錯誤地關閉。隨後復制舊日志文件到 一個安全的地方以防萬一某樣東西在關閉時出錯而你需要用它們來恢復表空間。從日志文件目錄刪除所有舊日志文件,編輯my.cnf來改變日志文件配置,並再 次啟動MySQL服務器。mysqld在啟動之時發現沒有日志文件,然後告訴你它正在創建一個新的日志文件。
作者 alang85