怎么清理Mysql占用空间方法

在Mysql环境下,常常由于数据磁盘满而导致Mysql故障。下面整理了如何在Mysql(5.7)环境下做好Mysql的空间清理。

一、日志文件清理

Mysql的日志日积月累,占用的磁盘空间越来越大,磁盘可用空间越来越少,需要自动清理或者手动清理

1.查看文件磁盘占用
1.1 查看磁盘空间占用

使用下面命令查看:df -Th或者df -lh

root@SJC1010:~# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  4.9G     0  4.9G   0% /dev
tmpfs          tmpfs     995M  496K  994M   1% /run
/dev/vda1      ext4       98G   42G   52G  45% /
tmpfs          tmpfs     4.9G   16K  4.9G   1% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     995M     0  995M   0% /run/user/0
root@SJC1010:~#
root@SJC1010:~# df -lh
Filesystem      Size  Used Avail Use% Mounted on
udev            4.9G     0  4.9G   0% /dev
tmpfs           995M  496K  994M   1% /run
/dev/vda1        98G   42G   52G  45% /
tmpfs           4.9G   16K  4.9G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           995M     0  995M   0% /run/user/0
root@SJC1010:~#

1.2 查看目录空间占用

# du -sh /opt
41G     /opt

1.3 查看文件空间占用

# ll -h /mysql/data/binlog/binlog/mysql-bin.000175
-rw------- 1 mysql oinstall 110M Nov  8 09:15 /mysql/data/binlog/binlog/mysql-bin.000175

2.Binlog日志清理
2.1定时自动清理Binlog日志

登录数据库,查看当前日志保存天数:

root@SJC1010:~# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 50462
Server version: 5.7.44-log Source distribution

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
mysql> show variables like '%expire_logs_days%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 7     |
+------------------+-------+
1 row in set (0.00 sec)

mysql>

这个默认是0,也就是logs不过期,可通过设置全局的参数,使他临时生效:

mysql> set global expire_logs_days=7;

设置了只保留7天BINLOG, 下次重启mysql这个参数默认会失败,所以需在my.cnf中设置
expire_logs_days = 7
这样在下次重启mysql的时候,expire_logs_days也一样是7;

2.2 手动删除Binlog日志
第一步:登陆进入mysql,并使用 show binary logs; 查看日志文件。

mysql>show binary logs;
±-----------------±----------+
| Log_name | File_size |
±-----------------±----------+
| mysql-bin.000001 | 234592362 |
| mysql-bin.000002 | 425234342 |
| mysql-bin.000003 | 425345345 |
| mysql-bin.000004 | 234234222 |
| mysql-bin.000005 | 425994852 |
±-----------------±----------+
1 row in set (0.00 sec)

第二步:查看正在使用的日志文件:show master status;

mysql>show master status;
±-----------------±----------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±-----------------±----------±-------------±-----------------±------------------+
| mysql-bin.000005 | 425994852 | | | |
±-----------------±----------±-------------±-----------------±------------------+
1 row in set (0.00 sec)

当前正在使用的日志文件是mysql-bin.000005,那么删除日志文件的时候应该排除掉该文件。
删除日志文件的命令:purge binary logs to ‘mysql-bin.000005’;

mysql>purge binary logs to 'mysql-bin.000005';

删除除mysql-bin.000005以外的日志文件,也可以指定其他文件名,例如mysql-bin.000003。
删除后就能释放大部分空间。

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:番茄网 » 怎么清理Mysql占用空间方法

分享到: 生成海报

热门文章

  • 评论 抢沙发

    • QQ号
    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址

    像番茄一样 表里如一

    表里如一表里如一
    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活