Documentation Home
MySQL 外壳 8.0  / 第 7 章 MySQL InnoDB 集群  / 7.5 配置InnoDB集群  /  7.5.8 InnoDB Cluster 和二进制日志清除

7.5.8 InnoDB Cluster 和二进制日志清除

在 MySQL 8 中,二进制日志会自动清除(由 定义binlog_expire_logs_seconds)。这意味着运行时间更长的集群 binlog_expire_logs_seconds 最终可能不包含具有完整二进制日志的实例,该日志包含实例应用的所有事务。这可能会导致需要自动配置实例,例如使用 MySQL Enterprise Backup,然后才能加入集群。运行 8.0.17 及更高版本的实例支持 MySQL Clone 插件,它通过提供不依赖增量恢复的自动配置解决方案解决了这个问题,请参阅 第 7.4.6 节,“将 MySQL Clone 与 InnoDB Cluster 结合使用”. 运行 8.0.17 之前版本的实例仅支持增量恢复,结果是,根据实例运行的 MySQL 版本,实例可能必须自动供应。否则依赖于分布式恢复的操作(例如 Cluster.addInstance() 等等)可能会失败。

在运行早期版本 MySQL 的实例上,以下规则用于二进制日志清除:

  • 8.0.1 之前版本的实例没有自动清除二进制日志,因为默认值为 expire_logs_days0。

  • 运行8.0.1之后但早于8.0.4版本的实例在30天后清除二进制日志,因为默认值为 expire_logs_days30。

  • 运行8.0.10以后版本的实例在30天后清除二进制日志,因为默认值为 binlog_expire_logs_seconds 2592000,默认值为 expire_logs_days0。

因此,根据集群运行的时间长短,二进制日志可能已被清除,您可能必须手动配置实例。同样,如果您手动清除二进制日志,您可能会遇到同样的情况。因此,强烈建议您升级到 8.0.17 之后的 MySQL 版本,以充分利用 MySQL Clone 为分布式恢复提供的自动配置,并在为您的 InnoDB 集群配置实例时最大限度地减少停机时间。