问题 :阿里云有台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