mysql binlog相关
1、清除的binlog
删除所有binlog日志,新日志编号从头开始
RESET MASTER;
删除mysql-bin.XXXX之前所有日志
PURGE MASTER LOGS TO 'mysql-bin.XXXX';
删除2019-10-25 12:00:00之前产生的所有日志
PURGE MASTER LOGS BEFORE '2019-10-25 12:00:00';
清除3天前的 binlog
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
2、修改保存几天的binlog
现在的配置时保存15天的
mysql> show variables like 'expire_logs_days';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| expire_logs_days | 15 |
+------------------+-------+
设置保存3天
mysql> set global expire_logs_days=3;
mysql> show variables like 'expire_logs_days';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| expire_logs_days | 3 |
+------------------+-------+
设置之后不会立即清除,触发条件是:
binlog大小超过max_binlog_size
手动执行flush logs
重新启动时(MySQL将会new一个新文件用于记录binlog)
修改配置文件
expire_logs_days=3
3、自动删除binlog
delete_logs.sh
#!/bin/bash
mysql -udevroot -h 127.0.0.1 -pdevroot -e 'PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ),INTERVAL 1 DAY)';
mysql -udevroot -h 127.0.0.1 -pdevroot -e 'reset master';
然后把脚本写入定时任务中