您的位置:首頁技術文章
文章詳情頁

tablespace - MySQL從5.5升級到5.7后innodb_file_per_table默認開啟問題

瀏覽:95日期:2022-06-18 18:19:36

問題描述

最近將數據庫從庫從5.5升級到5.7,發現儲存MySQL磁盤空間一下子占用變大了很多,排查了一下發現是升級后MySQL的系統表空間(ibdata1)很大[原本就很大],單個innodb表的表空間也變得很大[升級后變大],正常情況下應該只有一方會很大(系統的MyISAM表不多)

具體情況如下:升級前,mysql數據庫5.5,innodb_file_per_table使用默認配置,即是關閉的,innodb的表和索引都存儲在一起(ibdata1文件很大);升級到5.7時,innodb_file_per_table仍使用默認配置,但是默認是開啟的,升級時使用mysql_upgrade后,每個表使用了獨立的表空間,即每個數據庫文件夾下的表空間文件很大,但是原本的系統表空間ibdata1并沒有對應的變小。

查詢手冊發現:在mysql5.5的時候innodb_file_per_table配置是默認關閉的,但是數據庫升級到5.7的時候,innodb_file_per_table配置默認開啟了(其實在mysql5.6.6的時候就默認開啟了),官網說明:http://dev.mysql.com/doc/refm...

請問有沒有方法在不重新導入數據的情況下(重新導入耗時太長),使原本的系統表空間ibdata1文件變小。

問題解答

回答1:

首先需要明確你要做什么

1、MySQL 從5.5 升級到 5.72、不想重新導數據,減少ibdata1空間

如果你是生產環境的數據,建議你做好數據庫升級前的兼容性工作,充分的評估并找到不兼容或問題點,并解決。生產環境進行版本升級建議做數據庫的導入導出操作,不建議原地升級。

如果是測試環境你可以隨意折騰,甚至是執行完mysql_upgrade后 關閉MySQL,刪除ibdata1 文件,重啟后看看效果。

或者使用一些表整理命令或者嘗試修改表存儲引擎的方式整理一些表看看有沒有效果。

相關文章:
国产综合久久一区二区三区