清理binlog日志

  • Post author:
  • Post category:其他


二进制日志是一组文件,其中包含有关MySQL服务器进行的数据修改的信息。

该日志由一组二进制日志文件和一个索引文件组成。

使用PURGE BINARY LOGS语句删除指定索引文件名或日期之前的日志索引文件中列出的所有二进制日志文件。



datetime_expr


参数值应该为一个

DATETIME

值(一个值格式)。

'


YYYY-MM-DD hh:mm:ss


'

PURGE BINARY LOGS需要 BINLOG_ADMIN特权。如果服务器未使用–log-bin启用二进制日志记录的选项启动,则此语句无效 。

例子:

PURGE BINARY LOGS TO ‘mysql-bin.010’;

PURGE BINARY LOGS BEFORE ‘2019-04-02 22:46:26’;

复制slave时,此语句可以安全运行。您无需停止它们。

如果您有一个活动slave,当前正在读取您要删除的日志文件之一,则此语句不会删除正在使用的日志文件或晚于该日志文件的任何日志文件,但会删除任何较早的日志文件。在这种情况下会发出警告消息。

但是,如果未连接slave,而您恰巧要清除尚未读取的日志文件之一,则slave在重新连接后将无法复制。

要安全清除二进制日志文件,请按照以下步骤操作:

1. 在每个slave,用于SHOW SLAVE STATUS检查它正在读取哪个日志文件。

2.使用来获取复制源服务器上二进制日志文件的列表SHOW BINARY LOGS。

3.确定所有slave最早的日志文件。这是目标文件。如果所有副本都是最新的,则这是列表上的最后一个日志文件。

4.对要删除的所有日志文件进行备份。(此步骤是可选的,但始终建议这样做。)

5.清除所有日志文件,但不包括目标文件。

还可以将expire_logs_days系统变量设置为在给定的天数后自动使二进制日志文件失效.

如果使用复制,则应将变量设置为不低于slave可能滞后于源的最大天数。