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

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

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

三、參數
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的設定值。spa

相關文章
相關標籤/搜索