mysql binlog设置

一.查看binlong参数

mysql> show variables like ‘%expire%’;
±-------------------------------±------+
| Variable_name | Value |
±-------------------------------±------+
| binlog_expire_logs_seconds | 86400 |
| disconnect_on_expired_password | ON |
| expire_logs_days | 0 |
±-------------------------------±------+

MySQL5.7 时变量名为expire_logs_days,精确度为天;
MySQL8.0 使用binlog_expire_logs_seconds来控制,其效果和名字的变化一样,精确度由天变成了秒。超过这个时间的 binlog 会被自动清理,自动清理的触发时机为(注意:并不是以每秒这样的固定频率检查是否有过期日志):

若在MySQL启动时inlog_expire_logs_seconds和expire_logs_days 都没设置值,则使用默认值的 binlog_expire_logs_seconds值,即30天;
若在MySQL启动时binlog_expire_logs_seconds或者expire_logs_days其中一个设置为非0值则非0值的
参数作为binlog日志失效期;
若在启动时binlog_expire_logs_seconds和expire_logs_days参数都设置为非0值则使用binlog_expire_logs_seconds值,expire_logs_days值则失效并对其发出告警信息。

若要关闭自动清除binlog文件的功能则需要显示指定binlog_expire_logs_seconds=0 并且不设置expire_logs_days的值。
为了兼容早期版本若显示指定了expire_logs_days =0而没有指定binlog_expire_logs_seconds的值
此时自动清理binlog日志则是 禁用 的,并且此时binlog_expire_logs_seconds的默认值不适用。

动态修改:

mysql> set global binlog_expire_logs_seconds=606024;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like ‘%expire%’;
±-------------------------------±------+
| Variable_name | Value |
±-------------------------------±------+
| binlog_expire_logs_seconds | 86400 |
| disconnect_on_expired_password | ON |
| expire_logs_days | 0 |
±-------------------------------±------+
3 rows in set (0.00 sec)

持久化:

mysql> set persist binlog_expire_logs_seconds=606024;
Query OK, 0 rows affected (0.00 sec)

手动删除binlog日志

(1)直接删除(不推荐,不太安全)

找到binlog所在目录,用rm binglog名 直接删除

例:rm mysql-bin.010

(2)通过mysql提供的工具来删除

删除之前可以先看一下purge的用法:help purge;

删除举例:

reset master//删除所有binlog日志,新日志编号从头开始

purge master logs to ‘mysql-bin.010’;//删除mysql-bin.010之前所有日志

purge master logs before ‘2003-04-02 22:46:26’;// 删除2003-04-02 22:46:26之前产生的所有日志

你可能感兴趣的:(MySQL,mysql,数据库,java)