tablespace - MySQL從5.5升級到5.7后innodb_file_per_table默認開啟問題
問題描述
最近將數據庫從庫從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 文件,重啟后看看效果。
或者使用一些表整理命令或者嘗試修改表存儲引擎的方式整理一些表看看有沒有效果。
相關文章:
1. android glide asbitmap 在baseadpter中的問題2. java - 關于aop在controller不起用的問題3. javascript - requestAnimationFrame如何控制幀速?4. nginx - ngnix問題5. 網頁爬蟲 - 如何使用使用java抓取信息并制作一個排名系統?6. python - 在github上看到一個基于卷積神經網絡提高圖片分辨率的小項目waifu2x??7. java - com.android.internal.R.attr.dialogTheme 這個dialogTheme的內容再哪里查看?8. docker 17.03 怎么配置 registry mirror ?9. java如何高效讀寫10G以上大文件10. javascript - immutable配合react提升性能?

網公網安備