1. 程式人生 > >MySQL管理之道-筆記-undo log回滾日誌物理文件空間回收

MySQL管理之道-筆記-undo log回滾日誌物理文件空間回收

共享 想要 req .cn directory 文件 釋放 mysql5 初始化

undo log回滾日誌物理文件空間回收
MySQL5.6之前
undo log在ibdata1文件裏,ibdata1文件會越來越大,想要回收,必須全庫導出,刪除data目錄,再重新初始化數據庫,最後把全庫導入,才可實現ibdata1回收。
MySQL5.6
可以把undo log回滾分離到一個單獨的表空間裏,但不能回收空間大小。
MySQL5.7
支持在線回收
1、配置文件裏指定如下參數,如創建數據以後再指定會報錯。
#存放目錄
innodb_undo_directory=/data2/
#回滾段128k
innodb_undo_logs=128
#指定多個undolog文件
innodb_undo_tablespaces=4

2、undo log從共享表空間裏ibdata1拆分出去,在安裝MySQL時,需要在my.cnf裏指定,
數據庫啟動再指定,會報錯。

3、參數
innodb_undo_log_truncate參數設置為1,即開啟在線回收undo日誌文件,支持動態設置。
innodb_undo_tablespaces參數必須大於或等於2,即回收一個undolog日誌時,要保證另一個undo可以使用。
innodb_undo_logs undo回滾段的數量,至少大於等於35,默認為128
innodb_max_undo_log_size(默認1GB)當超過閾值時,會觸發truncate回收動作,truncate後空間縮小到10MB

innodb_purge_rseg_truncate_frequency 控制回收undo log的頻率。undo log空間在它的回滾段沒有得到釋放之前不會收縮,想要增加釋放
回滾的頻率,需要降低innodb_purge_rseg_truncate_frequency的設定值。

MySQL管理之道-筆記-undo log回滾日誌物理文件空間回收