mysql binlog自动删除与手动删除

binlog自动删除

通过my.cnf配置

expire_logs_days=1

通过运行sql

mysql在启动中的话可以通过sql来配置与查询expire_logs_days
执行以下 SQL 语句设置 expire_logs_days 参数为 1(表示只保存一天的 binlog)

SET GLOBAL expire_logs_days = 1;
SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';

确认设置已生效,可以通过以下 SQL 查询语句查看当前的 expire_logs_days 设置

SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';
SHOW VARIABLES LIKE 'expire_logs_days';

运行后发现mysql8此指令已失效要运行SET GLOBAL binlog_expire_logs_seconds = 86400;指令来设置精确到秒级别

设置只保留十个小时的bin_log

SET GLOBAL binlog_expire_logs_seconds = 36000;

binlog手动删除

在 MySQL 中,你可以使用 PURGE BINARY LOGS 命令来删除 binlog 文件。以下是一些常见的用法:

删除所有早于指定日志文件名的 binlog 文件:

sql

PURGE BINARY LOGS TO 'mysql-bin.000003';

删除所有早于指定时间点的 binlog 文件:

sql

PURGE BINARY LOGS BEFORE '2024-03-10 00:00:00';

删除所有早于当前时间一小时的 binlog 文件:

sql

PURGE BINARY LOGS BEFORE NOW() - INTERVAL 1 HOUR;

通过 RESET MASTER 删除与通过PURGE BINARY LOGS BEFORE NOW() - INTERVAL 1 HOUR;删除的优缺点比较

RESET MASTER 命令可以用于删除所有的二进制日志(binlog)文件,并将二进制日志索引文件重置为新的空文件。

使用 RESET MASTER 命令时,请务必谨慎操作,因为它会清除当前数据库实例的二进制日志,这将导致无法进行基于时间点的恢复或主从复制。

以下是使用 RESET MASTER 命令来删除二进制日志的步骤:
首先,登录到 MySQL 服务器的命令行界面或者使用适当的 MySQL 客户端。

执行以下命令:

RESET MASTER;

这将删除所有的二进制日志文件,并将二进制日志索引文件重置为空。
请注意,执行 RESET MASTER 命令后,之前的二进制日志将无法恢复,因此在执行之前请确保你已经完成了必要的备份工作,并且明确了对数据的影响。
另外,如果你只想删除旧的二进制日志文件而保留最新的日志文件,可以使用 PURGE BINARY LOGS BEFORE NOW() 命令。这样可以删除早于当前时间的所有二进制日志文件,而保留当前正在使用的日志文件。

执行指令后异常

SET GLOBAL expire_logs_days = 1
3683 - The option expire_logs_days and binlog_expire_logs_seconds cannot be used together. Please use binlog_expire_logs_seconds to set the expire time (expire_logs_days is deprecated)
时间: 0.001s

MySQL 中不能同时使用 expire_logs_days 和 binlog_expire_logs_seconds 这两个选项来设置二进制日志的过期时间,且建议使用 binlog_expire_logs_seconds 来指定过期时间,因为 expire_logs_days 已经被弃用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值