MySQL 定时清理Binlog日志并自动清理

MySQL 定时清理Binlog日志并自动清理

MySQL的二进制日志(Binlog)对于数据库的恢复和复制是至关重要的。然而,随着时间的推移,这些日志文件可能会占据大量存储空间。因此,及时而安全地删除这些日志文件变得非常重要。

1. 手动删除Binlog日志

1.1 查看当前的Binlog文件
-- 查看当前的Binlog文件
SHOW BINARY LOGS;

在这里插入图片描述

1.2 删除特定文件的Binlog日志

首先,我们可以手动删除特定文件的Binlog日志。、

-- 删除特定文件,替换'filename'为实际文件名
PURGE BINARY LOGS TO 'filename';
1.3 删除早于特定时间点的Binlog日志

如果你想删除早于特定时间点的Binlog日志,可以使用以下命令:


-- 删除早于'YYYY-MM-DD HH:MM:SS'时间点的Binlog日志
PURGE BINARY LOGS BEFORE 'YYYY-MM-DD HH:MM:SS';
-- 删除7天之前的Binlog日志
PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);

2. 配置自动删除Binlog日志

my.cnf(或my.ini)文件中添加以下配置,以在达到指定大小时自动删除Binlog日志:
MySQL5.7:

[mysqld]
expire_logs_days = 7   			# 设置Binlog日志过期时间,单位为天
max_binlog_size = 1024M 		# 设置单个Binlog文件的最大大小

MySQL8以上:

[mysqld]
expire_logs_seconds = 604800  	# 设置Binlog日志过期时间,单位为秒(一周为604800秒)
max_binlog_size=1024M			# 设置单个Binlog文件的最大大小

3. 重启MySQL服务器

无论是手动删除还是配置自动删除,都需要重启MySQL服务器以应用更改。

sudo systemctl restart mysql

通过查询特定的系统变量来检查是否开启了自动清理Binlog日志。具体而言,你可以检查expire_logs_days 和 max_binlog_size 这两个变量的值。

使用以下SQL语句检查自动清理相关的系统变量:

SHOW VARIABLES LIKE 'expire_logs_days';
SHOW VARIABLES LIKE 'max_binlog_size';

这将返回当前的 expire_logs_daysmax_binlog_size 的值。如果这两个值都设置为非零且合理的数值,那么自动清理功能应该是开启的。

如果 expire_logs_days 的值为0,表示没有设置Binlog日志自动清理的过期时间,而如果 max_binlog_size 的值为0,表示没有设置单个Binlog文件的最大大小,这可能导致不会自动清理Binlog日志。

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LOVE_DDZ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值