tablespace - MySQL從5.5升級(jí)到5.7后innodb_file_per_table默認(rèn)開(kāi)啟問(wèn)題
問(wèn)題描述
最近將數(shù)據(jù)庫(kù)從庫(kù)從5.5升級(jí)到5.7,發(fā)現(xiàn)儲(chǔ)存MySQL磁盤(pán)空間一下子占用變大了很多,排查了一下發(fā)現(xiàn)是升級(jí)后MySQL的系統(tǒng)表空間(ibdata1)很大[原本就很大],單個(gè)innodb表的表空間也變得很大[升級(jí)后變大],正常情況下應(yīng)該只有一方會(huì)很大(系統(tǒng)的MyISAM表不多)
具體情況如下:升級(jí)前,mysql數(shù)據(jù)庫(kù)5.5,innodb_file_per_table使用默認(rèn)配置,即是關(guān)閉的,innodb的表和索引都存儲(chǔ)在一起(ibdata1文件很大);升級(jí)到5.7時(shí),innodb_file_per_table仍使用默認(rèn)配置,但是默認(rèn)是開(kāi)啟的,升級(jí)時(shí)使用mysql_upgrade后,每個(gè)表使用了獨(dú)立的表空間,即每個(gè)數(shù)據(jù)庫(kù)文件夾下的表空間文件很大,但是原本的系統(tǒng)表空間ibdata1并沒(méi)有對(duì)應(yīng)的變小。
查詢手冊(cè)發(fā)現(xiàn):在mysql5.5的時(shí)候innodb_file_per_table配置是默認(rèn)關(guān)閉的,但是數(shù)據(jù)庫(kù)升級(jí)到5.7的時(shí)候,innodb_file_per_table配置默認(rèn)開(kāi)啟了(其實(shí)在mysql5.6.6的時(shí)候就默認(rèn)開(kāi)啟了),官網(wǎng)說(shuō)明:http://dev.mysql.com/doc/refm...
請(qǐng)問(wèn)有沒(méi)有方法在不重新導(dǎo)入數(shù)據(jù)的情況下(重新導(dǎo)入耗時(shí)太長(zhǎng)),使原本的系統(tǒng)表空間ibdata1文件變小。
問(wèn)題解答
回答1:首先需要明確你要做什么
1、MySQL 從5.5 升級(jí)到 5.72、不想重新導(dǎo)數(shù)據(jù),減少ibdata1空間
如果你是生產(chǎn)環(huán)境的數(shù)據(jù),建議你做好數(shù)據(jù)庫(kù)升級(jí)前的兼容性工作,充分的評(píng)估并找到不兼容或問(wèn)題點(diǎn),并解決。生產(chǎn)環(huán)境進(jìn)行版本升級(jí)建議做數(shù)據(jù)庫(kù)的導(dǎo)入導(dǎo)出操作,不建議原地升級(jí)。
如果是測(cè)試環(huán)境你可以隨意折騰,甚至是執(zhí)行完mysql_upgrade后 關(guān)閉MySQL,刪除ibdata1 文件,重啟后看看效果。
或者使用一些表整理命令或者嘗試修改表存儲(chǔ)引擎的方式整理一些表看看有沒(méi)有效果。
相關(guān)文章:
1. objective-c - ios百度地圖定位問(wèn)題2. html5 - 如何解決bootstrap打開(kāi)模態(tài)modal窗口引起頁(yè)面抖動(dòng)?3. javascript - 求助關(guān)于js正則問(wèn)題4. javascript - node.js服務(wù)端渲染解疑5. javascript - 求助這種功能有什么好點(diǎn)的插件?6. html5 - rudy編譯sass的時(shí)候有中文報(bào)錯(cuò)7. html - css 如何添加這種邊框?8. 為何 localStorage、sessionStorage 屬于html5的范疇,但是為何 IE8卻支持?9. 微信開(kāi)放平臺(tái) - Android調(diào)用微信分享不顯示10. javascript - 關(guān)于定時(shí)器 與 防止連續(xù)點(diǎn)擊 問(wèn)題
