Mysql主从同步mysql-bin的log文件过大资源占满(mysql服务器资源爆满)

本文讲述了当MySQL服务器资源被大量占用时,如何定位大文件日志,清理mysql-bin文件以释放资源。涉及的方法包括检查磁盘使用、du命令查找大文件、清理过期日志和配置持久设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

mysql服务器爆满,资源全部都占用满了,导致页面很卡,什么都无法操作。

执行free -h命令查看缓存使用情况。
执行df -h命令查看硬盘使用情况。
在这里插入图片描述
mysql的数据存储目录home,内存使用free,cache,各个资源都爆满了!!!

解决方法

先找到大文件目录:
执行du -h命令,每次会显示最大的文件目录,进入目录再次执行du -h,依次找到占用空间最大的目录(与数据库名字一致的文件夹不用看)
在这里插入图片描述
到目录下执行ll命令,查看文件信息。
在这里插入图片描述
发现很多mysql-bin.xxxx的文件,这是mysql的操作日志文件,mysql的写操作、更新操作等都会被记录,数据量大的话很快就会写满,这个日志文件如果是单节点的可以通过配置关闭,但是主从同步(和Redis同理)会通过读取这些日志操作文件来一步步同步,所以必须开启着这个配置(配置项是log-bin,mysql的配置文件是/etc/my.cnf文件)。
找到了这些文件后,可以开始进行请理。

数据库还能连接和使用时的请理方式

可以连接上数据库时,通过mysql命令的形式清除日志文件,这种方式如果能成功较为稳妥。
为了数据库文档,将三天前的日志清除就可以。

#将指定时间之前的日志清理
purge binary logs before '2021-12-01 12:00:00';

#.后面的数字是始终顺序递增的,找到三天前的数字最大的一个文件,执行命令将指定日志文件之前的日志清除
purge binary logs to 'mysql-bin.000003';

如果执行以上命令清除失败或对数据库产生了影响,那就恭喜你,中奖了。
可以连接上mysql尝试执行下flush logs命令,所有主从数据库都执行一下,如果恢复正常,就可以了。
如果恢复不了,那么需要重启数据库,service mysqld restart 。

恢复正常后,可以通过执行SQL来临时配置mysql-bin文件只存储三天,重启mysql后该配置会失效:

 set global expire_logs_days = 3;

修改配置为文件可以永久生效,但是需要重启一次mysql服务:

//关闭MySql服务
service mysqld stop
//vi /etc/my.cnf
[mysqld]
...
#开启binary log
log-bin=mysql-bin

#日志超过3天自动过期
expire_logs_days = 3
...

//开启MySql服务
service mysqld start
// 查看mysql状态
service mysqld status

在这里插入图片描述

连接不上数据库或以上操作失败

使用手动清理的方式(存在风险),将mysql-bin.xxx的文件从小到大手动删除一下,只保留近几天的。
删除完成后同样的设置下日志文件只存储三天,然后重启数据库(如果数据库不能连接,可以连接的话暂时不用重重启),然后同样的和上面一样将日志文件设置为只存储三天。

也可以手动写脚本,执行定时任务去删除日志文件。

如果删除后出现数据无法同步的问题,可以查看从节点mysql的错误日志,将找不到的日志文件手动创建出来并且chomd一下权限。

完美解决!!

男人到死仍是少年!!!

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老司机张师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值