tablespace - MySQL從5.5升級到5.7后innodb_file_per_table默認(rèn)開啟問題
問題描述
最近將數(shù)據(jù)庫從庫從5.5升級到5.7,發(fā)現(xiàn)儲存MySQL磁盤空間一下子占用變大了很多,排查了一下發(fā)現(xiàn)是升級后MySQL的系統(tǒng)表空間(ibdata1)很大[原本就很大],單個(gè)innodb表的表空間也變得很大[升級后變大],正常情況下應(yīng)該只有一方會很大(系統(tǒng)的MyISAM表不多)
具體情況如下:升級前,mysql數(shù)據(jù)庫5.5,innodb_file_per_table使用默認(rèn)配置,即是關(guān)閉的,innodb的表和索引都存儲在一起(ibdata1文件很大);升級到5.7時(shí),innodb_file_per_table仍使用默認(rèn)配置,但是默認(rèn)是開啟的,升級時(shí)使用mysql_upgrade后,每個(gè)表使用了獨(dú)立的表空間,即每個(gè)數(shù)據(jù)庫文件夾下的表空間文件很大,但是原本的系統(tǒng)表空間ibdata1并沒有對應(yīng)的變小。
查詢手冊發(fā)現(xiàn):在mysql5.5的時(shí)候innodb_file_per_table配置是默認(rèn)關(guān)閉的,但是數(shù)據(jù)庫升級到5.7的時(shí)候,innodb_file_per_table配置默認(rèn)開啟了(其實(shí)在mysql5.6.6的時(shí)候就默認(rèn)開啟了),官網(wǎng)說明:http://dev.mysql.com/doc/refm...
請問有沒有方法在不重新導(dǎo)入數(shù)據(jù)的情況下(重新導(dǎo)入耗時(shí)太長),使原本的系統(tǒng)表空間ibdata1文件變小。
問題解答
回答1:首先需要明確你要做什么
1、MySQL 從5.5 升級到 5.72、不想重新導(dǎo)數(shù)據(jù),減少ibdata1空間
如果你是生產(chǎn)環(huán)境的數(shù)據(jù),建議你做好數(shù)據(jù)庫升級前的兼容性工作,充分的評估并找到不兼容或問題點(diǎn),并解決。生產(chǎn)環(huán)境進(jìn)行版本升級建議做數(shù)據(jù)庫的導(dǎo)入導(dǎo)出操作,不建議原地升級。
如果是測試環(huán)境你可以隨意折騰,甚至是執(zhí)行完mysql_upgrade后 關(guān)閉MySQL,刪除ibdata1 文件,重啟后看看效果。
或者使用一些表整理命令或者嘗試修改表存儲引擎的方式整理一些表看看有沒有效果。
相關(guān)文章:
1. 解決Android webview設(shè)置cookie和cookie丟失的問題2. javascript - nodejs使用mongoose連接數(shù)據(jù)庫,使用post提交表單在后臺,后臺處理后調(diào)用res.redirect()跳轉(zhuǎn)界面無效?3. javascript - vue2.0中,$refs對象為什么用駝峰的方式獲取不到屬性?4. javascript - 能否讓vue-cli的express修改express重啟服務(wù)5. Android頂部的顯示電池、wifi等信息的狀態(tài)欄在不在當(dāng)前Activity的decorView中?6. java - 注解上的屬性可以傳遞嗎?7. android - 分享到微信,如何快速轉(zhuǎn)換成字節(jié)數(shù)組8. node.js - npm install全局安裝出錯(cuò),請問如何解決?謝謝!9. node.js - npm一直提示proxy有問題10. python bottle跑起來以后,定時(shí)執(zhí)行的任務(wù)為什么每次都重復(fù)(多)執(zhí)行一次?
