命令行下设置mysql定时删除binlog日志

一、mysql8.0之前的版本操作如下:

通过设置binlog过期时间,使系统⾃动删除binlog⽂件
1.在mysql中修改
查看binlog过期时间,这个值默认是0天,也就是说不⾃动清理,可以根据⽣产情况修改,本例修改为7天

mysql> show variables like 'expire_logs_days'; 
+------------------------+-------+ 
| Variable_name  | Value | 
+------------------------+-------+ 
| expire_logs_days |   0  | 
+------------------------+-------+ 
mysql> set global expire_logs_days = 7;    #设置binlog多少天过期
设置之后不会⽴即清除,触发条件是以下之⼀(我们可以选择通过手动执行2来实现):
1.binlog⼤⼩超过max_binlog_size,max_binlog_size默认为1G
2.⼿动执⾏flush logs

二、mysql8.0之后的版本操作如下

如果在mysql8中执行设置expire_logs_days参数命令,会提示下面的错误

ERROR 3683 (HY000): 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)

解决方案:
错误提示的意思是指,expire_logs_days这个参数已经被弃用,mysql8需要使用binlog_expire_logs_seconds来设置binlog保留时间。

binlog_expire_logs_seconds 参数,单位由天改为秒,如下设置1天。

set global binlog_expire_logs_seconds=60*60*24;

如下是设置5天的命令:

set global binlog_expire_logs_seconds=60*60*24*5;

可以通过show variables like '%expire%';查看更改结果。

执行该命令后,⼿动执⾏flush logs,即可完成设置。

flush logs,

可以通过show variables like '%expire%';查看更改结果。

你可能感兴趣的:(数据库,mysql,数据库,sql,运维)