mysql ibdata1文件过大解决

554次阅读  |  发布于2年以前

问题 :阿里云有台mysql服务器的硬盘快满了。主要是/var/lib/mysql/ibdata1文件很大

解决方法:备份数据库-->停用数据库-->修改mysql配置文件-->删除ib*开头的文件-->启动数据库-->还原数据库 1.备份

mysqldump -u root -p  --all-databases  --add-drop-database   --flush-privileges --routines   > /mnt/data/all-database.sql

参数说明:


--all-databases         备份全部数据库
--add-drop-database     每个数据库创建之前添加drop数据库语句
--flush-privileges     在导出mysql数据库之后,发出一条FLUSH  PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候
--routines           导出存储过程以及自定义函数

2.停用数据库

systemctl  stop mysqld  或者 service mysqld stop

3.修改文件

vim /etc/my.cnf
[mysqld]
innodb_file_per_table=1

4.删除文件


cd /var/lib/mysql/
rm -f  ib*

5.启动数据库

systemctl start mysqld  或者 service mysqld start

6.还原数据库

mysql  -uroot -p
source  /mnt/data/all-database.sql

完成! 注意事项: 1.停用数据库注意要用服务停,不要直接kill, 后面重启可能会报错。 2.修改配置文件并且没有删除ib* ,数据库一直起不来,报错,把ib*文件删除在重启 3.Table‘performance_schema.session_variables’ doesn’t exist的异常


3.1  mysql_upgrade -uroot -p
3.2  systemctl stop mysqld
3.3  systemctl  start  mysqld

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8