千家信息网

MySql ibdata1文件太大如何缩小

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,MySql innodb如果是共享表空间,ibdata1文件越来越大,达到了30多个G,对一些没用的表进行清空:truncate table xxx;然后optimize table xxx; 没有效
千家信息网最后更新 2026年11月03日MySql ibdata1文件太大如何缩小

MySql innodb如果是共享表空间,ibdata1文件越来越大,达到了30多个G,对一些没用的表进行清空:
truncate table xxx;
然后optimize table xxx; 没有效果
因为对共享表空间不起作用。
mysql ibdata1存放数据,索引等,是MYSQL的最主要的数据。

如果不把数据分开存放的话,这个文件的大小很容易就上了G,甚至几十G。对于某些应用来说,并不是太合适。因此要把此文件缩小。
无法自动收缩,必须数据导出,删除ibdata1,然后数据导入,比较麻烦,因此需要改为每个表单独的文件。

解决方法:数据文件单独存放(共享表空间如何改为每个表独立的表空间文件)。
步骤如下:

1)备份数据库

从命令行进入MySQL Server 5.0\bin
备份全部数据库,执行命令
D:\>mysqldump -q -umysql -ppassword --add-drop-table --all-databases > c:/all.sql

做完此步后,停止数据库服务。

2)找到my.ini或my.cnf文件
linux下执行 ./mysqld --verbose --help | grep -A 1 'Default options'
会有类似显示:
Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf /usr/local/service/mysql3306/etc/my.cnf

windows环境下可以:
mysqld --verbose --help > mysqlhelp.txt
notepad mysqlhelp.txt
在里面查找Default options,可以看到查找my.ini的顺序,以找到真实目录

3)修改mysql配置文件
打开my.ini或my.cnf文件
[mysqld]下增加下面配置
innodb_file_per_table=1

验证配置是否生效,可以重启mysql后,执行
show variables like '%per_table%'
看看innodb_file_per_table变量是否为ON

4)删除原数据文件

删除原来的ibdata1文件及日志文件ib_logfile*,删除data目录下的应用数据库文件夹(mysql文件夹不要删)

5)还原数据库

启动数据库服务

从命令行进入MySQL Server 5.0\bin
还原全部数据库,执行命令mysql -uusername -pyourpassword < c:/all.sql

经过以上几步后,可以看到新的ibdata1文件就只有几十M了,数据及索引都变成了针对单个表的小ibd文件了,它们在相应数据库的文件夹下面。

文件 数据 数据库 命令 空间 文件夹 配置 备份 目录 索引 应用 服务 合适 作用 单个 变量 只有 多个 大小 效果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 南京欣网互联网络科技有限公司 哈尔滨大商圈互联网科技有限公司 互联网电商科技 河南真二互联网科技有限公司 迪茉互联网科技 互联网科技英文翻译 中正互联网科技招聘 互联网科技大奖都有哪些公司 允成互联网科技有限公司融资 浙南科技城互联网大厦建设工程 迪庆互联网科技招生 互联网科技和法律行业 高科技互联网发展前景如何 工业互联网等科技实现智能化赋能 互联网金融科技公司的优势 皮皮虾互联网科技有限公司 领航科技大厦互联网公司 互联网科技快讯热点 互联网相关科技技术 互联网加科技 互联网中国科技 深圳互联网科技公司 互联网 卓越科技 世界互联网科技公司市值排名 互联网5g黑科技有哪些 翼展科技 首家互联网医院 卓翼科技产业互联网合作 万物互联网智能科技 亚光科技低轨卫星互联网
0