mysql磁盤空間暴增

       今天上班後,忽然發現mysql從庫的磁盤空間忽然爆滿,經過一番查看後,發現ibtmp1佔的空間很大,已經快300G了。經過查詢得知, ibtmp1文件是 MySQL5.7的新特性,MySQL5.7使用了獨立的臨時表空間來存儲臨時表數據,但不能是壓縮表。臨時表空間在實例啓動的時候進行創建,shutdown的時候進行刪除。即爲所有非壓縮的innodb臨時表提供一個獨立的表空間,默認的臨時表空間文件爲ibtmp1,位於數據目錄。我們可通過innodb_temp_data_file_path參數指定臨時表空間的路徑和大小,默認12M。只有重啓實例才能回收臨時表空間文件ibtmp1的大小。create temporary table和using temporary table將共用這個臨時表空間。默認配置爲ibtmp1:12M:autoextend,也就是說在支持大文件的系統這個文件大小是可以無限增長的。

  解決方法:

1. 修改my.cnf配置文件:

innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G

2. 重啓mysql服務。


注意:爲了避免以後再出現類似的情況,一定要在限制臨時表空間的最大值,如innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G


mysql什麼時候會創建臨時表,參考https://dev.mysql.com/doc/refman/5.7/en/internal-temporary-tables.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章