MySQL 文件目录空间长满问题处理
Posted A洋槐树
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 文件目录空间长满问题处理相关的知识,希望对你有一定的参考价值。
已用了4年MariaDB,也就是有4年没用mysql,所以有的新特性已不在我的记忆范围内。比如本文的innodb_file_per_table参数已经是MySQL 默认开启的了......
言归正传,今天碰到的一个小问题,真相就是:
1.restart MySQL后tmp 表空间可以自动收缩。腾出一点空间
2.移走部分Datafile腾出一点空间,你可以认为用到了MySQL的冷备和恢复。
具体:
MySQL datafile 所在目录空间满了用户想要truncate 相关数据库的大表无法truncate,
1.错误提示:
ERROR [HY000][3]: Error writing file '/tmp/MYbEd05t' (Errcode: 28)
2. df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 50G 50G 50G 100% /
/dev/mapper/cl-home 121G 61G 60G 51% /home
逐步判定为mysql 数据库目录空间占用最大
cd /
du -sh *
3.mysql -uroot -p 后show variables like '%bin%' 查看是否binlog 开启,引起磁盘空间不足。结论为:
| log_bin | OFF |
4.mysql -uroot -p 后show variables like '%per%' 查看数据库数据文件是否为per table的
| innodb_file_per_table | ON |
5.拟定解决方案为:
1)将相应数据库mv 到有空间的home目录下,待truncate 相关大表数据后再mv 回该数据库。
2)重启mysql 数据库释放tmp表空间空间。
a.先备份目标数据库
mkdir backup20210219
mysqldump -uroot -p --databases tcms>/home/backup20210219/tcms.sql
b. systemctl stop mysqld 报错
Failed to stop mysqld.service: Unit mysqld.service not loaded. – 待处理
故:cd /usr/local/mysql/support-files 后 ./mysql.server stop
c.mv database
mv /usr/local/mysql/data/tcms /home/backup20210219/
d. cd /usr/local/mysql/support-files 后 ./mysql.server start
e.请用户truncate 相关大表。可执行。
f.用户truncate 完后
cd /usr/local/mysql/support-files 后 ./mysql.server stop
g.
mv /home/backup20210219/tcms /usr/local/mysql/data/
h. cd /usr/local/mysql/support-files 后 ./mysql.server start
i. 登录 mysql 检查mv的数据库是否可用。
mysql -uroot -p
mysql> use tcms
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select count(*) from uom;
+----------+
| count(*) |
+----------+
| 118 |
+----------+
1 row in set (0.00 sec)
-- 若show database 查不到tcms则需要在OS检查一下文件夹权限,改为mysql:mysql即可。但此次mv没碰到该问题。
g. 删除home 下个人建的backup20210219
rm -rf backup20210219
综上问题已处理。
但restart mysql 数据库可以释放tmp 表空间的空间:ibtmp1 ,也是一个有效的解决办法。另外,可以mv 数据库datafile 的前提是 : innodb_file_per_table =ON (mysql5.7.16 默认为on)
以上是关于MySQL 文件目录空间长满问题处理的主要内容,如果未能解决你的问题,请参考以下文章