MySQL8中binlog过期参数
2023-05-25 10:30 abce 阅读(1900) 评论(0) 编辑 收藏 举报binlog_expire_logs_seconds
设置二进制日志过期时间(以秒为单位)。二进制日志文件过期后,可以被自动删除。可能的删除发生在启动时和刷新二进制日志(flush logs、或日志容量超过max_binlog_size的设置)时。
默认的二进制日志过期时间为2592000秒,即30天(30*24*60*60秒)。
如果binlog_expire_logs_seconds和已弃用的系统变量expire_logs_days都没有在启动时设置值,则应用默认值。
如果在启动时设置了binlog_expire_logs_seconds或expire_logs_days其中一个变量的非零值,则使用该值作为二进制日志的过期时间。
如果在启动时设置了这两个变量为非零值,则binlog_expire_logs_seconds的值将用作二进制日志的过期时间,而expire_logs_days的值将被忽略并发出警告消息。
在运行时,如果binlog_expire_logs_seconds或expire_logs_days当前被设置为非零值,则不能将另外一个设置为非零值。
由于binlog_expire_logs_seconds的默认值不为零,因此必须显式地将binlog_expire_logs_seconds设置为零,才能设置或更改expire_logs_days的值。
从MySQL 8.0.29开始,可以通过将binlog_expire_logs_auto_purge系统变量设置为OFF来禁用二进制日志的自动清除。这优先于binlog_expire_logs_seconds的任何设置。
在MySQL 8.0.28及更早的版本中,要禁用自动清除二进制日志,请显式地为binlog_expire_logs_seconds指定值0,并且不要为expire_logs_days指定值。
为了与早期版本兼容,如果显式地为expire_logs_days指定值为0,而不为binlog_expire_logs_seconds指定值,自动清除也将被禁用。在这种情况下,不应用binlog_expire_logs_seconds的默认值。
要手动删除二进制日志文件,请使用PURGE binary LOGS语句。
binlog_expire_logs_auto_purge
启用或禁用自动清除二进制日志文件。将此变量设置为ON(默认值)将启用自动清除;将其设置为OFF将禁用自动清除。清理前等待的时间间隔由binlog_expire_logs_seconds和expire_logs_days控制。
即使设置binlog_expire_logs_auto_purge为on,如果将binlog_expire_logs_seconds和expire_logs_days都设置为0,自动清理日志功能也不会生效。
expire_logs_days
在8中,已经过期。将来会被移除。