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. thinkphp6中怎么把类放到容器中?2. node.js - 我是一个做前端的,求教如何学习vue,node等js引擎?3. vue.js - 为什么我的vue项目上传到github不能预览?4. javascript - 手机网页如何,插入地图 ;并设置多个标注点 ,还可路线查询5. 怎么学好php6. 如何更新/删除指定的两条或多条数据7. 现在的视频 “多杂乱”8. 如何将行内块元素的内容垂直水平两个方向居中?9. javascript - vue webpack打包问题10. javascript - Ajax加载Json时,移动端页面向左上角缩小一截儿,加载完成后才正常显示,这该如何解决?

网公网安备