除了这里描述的语句外,下面的 SHOW 语句还用于复制中的源服务器。SHOW REPLICAS | SHOW SLAVE HOSTSPURGE { BINARY | MASTER } LOGS {
TO 'log_name'
| BEFORE datetime_expr
}
二进制日志是一组文件,其中包含有关 MySQL 服务器所做数据修改的信息。日志由一组二进制日志文件和一个索引文件组成。PURGE BINARY LOGS 语句删除日志索引文件中在指定的日志文件名或日期之前列出的所有二进制日志文件。BINARY 和 MASTER 是同义词。删除的日志文件也会从索引文件中记录列表中删除,因此给定的日志文件将成为列表中的第一个。PURGE BINARY LOGS 需要 BINLOG_ADMIN 权限。如果服务器没有使用 --log-bin 选项启动来启用二进制日志记录,则此语句无效。PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2019-04-02 22:46:26';
BEFORE 变量的 datetime_expr 参数应为 DATETIME 值('YYYY-MM-DD hh:mm:ss' 格式的值)。复制副本时可以安全地运行此语句,不必停止他们。如果当前有一个活动副本正在读取要删除的某个日志文件,则此语句不会删除正在使用的日志文件或该日志文件之后的任何日志文件,但删除任何之前的日志文件。在这种情况下会发出警告消息。但是,如果副本未连接,而您碰巧清除了它尚未读取的一个日志文件,则该副本在重新连接后无法复制。1. 在每个副本上,使用 SHOW REPLICA | SLAVE STATUS 检查它正在读取哪个日志文件。2. 使用 SHOW BINARY LOGS 获取源上二进制日志文件的列表。3. 确定所有副本中最早的日志文件。这是目标文件。如果所有副本都是最新的,则这是列表中的最后一个日志文件。4. 备份要删除的所有日志文件。(此步骤是可选的,建议执行。)5. 清除目标文件之前的所有日志文件,但不包括目标文件。当 .index 文件中列出的二进制日志文件已通过其他方法(如在 Linux 上使用 rm 命令)从系统中删除时,PURGE BINARY LOGS TO 和 PURGE BINARY LOGS BEFORE 都会报错失败。要处理此类错误,请手动编辑 .index 文件(它是一个简单的文本文件),以确保它只列出实际存在的二进制日志文件,然后再次运行失败的 PURGE BINARY LOGS 语句。二进制日志文件在服务器的二进制日志过期后自动删除。文件的删除可以在启动时进行,也可以在刷新二进制日志时进行。默认的二进制日志过期时间为30天。可以使用 binlog_expire_logs_seconds 系统变量指定其他过期时间。如果使用复制,则应指定一个不低于复制副本可能落后于源的最长时间的过期期限。https://dev.mysql.com/doc/refman/8.0/en/purge-binary-logs.html