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 已经被弃用。