undo log回滾日志是保存在共享表空間ibdata1文件裡,随着業務的不停運轉,ibdata1文件會越來越大,想要回收(收縮空間大小)極其困難和複雜, 必須先mysqldump -A全庫的導出,然後删掉data目錄,然後重新初始化安裝,最後再把全庫的SQL文件導入,采用這種方法進行ibdata1文件的回收。那麼有沒有什麼更好的辦法呢?
在MySQL5.6裡,可以把undo log回滾日志分離出去,到一個單獨的表空間裡,但缺點就是不能進行回收(收縮)空間大小。直到MySQL5.7 ,才支持在線收縮。
對一張100萬的sbtest表,進行全表更新4次,如:
可以發現undo log空間急速增長,如:
然後用sysbench做壓力測試,讓數據庫運行起來,觀察錯誤日志,就會自動把undo log空間給回收(收縮),如:
再通過觀察物理文件,已經被回收了,默認10M大小。
這個功能出來以後,整體降低了磁盤空間使用率,并且加快了xtrabackup熱備份的速度。
後面會分享更多devops和DBA方面的内容,感興趣的朋友可以關注一下~
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!