tablespace - MySQL从5.5升级到5.7后innodb_file_per_table默认开启问题
伊谢尔伦
伊谢尔伦 2017-04-17 15:30:18
0
1
748

最近将数据库从库从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文件变小。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回覆(1)
刘奇

首先要先明確你要做什麼

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

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

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!