• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • PURGE BINARY LOGS语句

    本节讨论用于管理主复制服务器的语句。“用于控制从属服务器的SQL语句”,讨论了用于管理从属服务器的语句。

    除了此处描述的语句外,以下SHOW语句还与复制中的主服务器一起使用。有关这些语句的信息,请参见“ SHOW语句”。

    • SHOW BINARY LOGS
    • SHOW BINLOG EVENTS
    • SHOW MASTER STATUS
    • SHOW SLAVE HOSTS
    PURGE { BINARY | MASTER } LOGS {
        TO 'log_name'
      | BEFORE datetime_expr
    }
    

    二进制日志是一组文件,其中包含有关MySQL服务器进行的数据修改的信息。该日志由一组二进制日志文件和一个索引文件组成(请参见“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 SLAVE STATUS检查它正在读取哪个日志文件。
    2. 使用来获取主服务器上二进制日志文件的列表SHOW BINARY LOGS
    3. 确定所有从站中最早的日志文件。这是目标文件。如果所有从属服务器都是最新的,则这是列表中的最后一个日志文件。
    4. 对要删除的所有日志文件进行备份。(此步骤是可选的,但始终建议。)
    5. 清除所有日志文件,但不包括目标文件。

    PURGE BINARY LOGS TOPURGE BINARY LOGS BEFORE当文件中列出的二进制日志文件.index已通过其他方式(例如在Linux上使用rm)从系统中删除时,两者均均失败,并出现错误。(缺陷号18199,缺陷号18453)要处理此类错误,请.index手动编辑文件(这是一个简单的文本文件),以确保它只列出实际存在的二进制日志文件,然后再次运行PURGE BINARY LOGS失败的语句。

    服务器的二进制日志过期后,二进制日志文件会自动删除。可以在启动时以及刷新二进制日志时删除文件。默认的二进制日志有效期为30天。您可以使用binlog_expire_logs_seconds系统变量指定替代的有效期限。如果使用的是复制,则应指定一个有效期限,该期限不小于您的从服务器可能落后于主服务器的最大时间。