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

mysql  ibdata1文件过大解决_mysql数据库

 mysql  ibdata1文件过大解决_重启_02

 

解决方法:备份数据库-->停用数据库-->修改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