MySQL Router 8.4:如何处理元数据更新的开销

MySQL Router 8.4:如何处理元数据更新的开销

💡 原文英文,约3400词,阅读约需13分钟。
📝

内容提要

新建的InnoDB Cluster即使未投入生产,仍会因MySQL Router每秒刷新集群元数据而产生大量二进制日志写入。为减少开销,可将binlog_row_image设置为MINIMAL或启用use_gr_notifications功能。

🎯

关键要点

  • 新建的InnoDB Cluster即使未投入生产,仍会因MySQL Router每秒刷新集群元数据而产生大量二进制日志写入。
  • MySQL Router将集群状态和配置信息存储在同一集群的专用元数据库中,默认每秒刷新一次。
  • 每次刷新都会更新mysql_innodb_cluster_metadata.routers表,即使集群状态没有变化。
  • 使用ROW二进制格式时,更新一列实际上会导致整行被写入两次,从而增加二进制日志的开销。
  • MySQL Router 8.4版本引入了新的元数据存储方式,导致二进制日志开销增加。
  • 可以通过将binlog_row_image设置为MINIMAL来减少二进制日志的写入量。
  • 启用use_gr_notifications功能可以让Group Replication集群异步通知路由器,从而减少不必要的元数据刷新。
  • 启用use_gr_notifications后,路由器的元数据缓存刷新将仅在实际发生集群事件时进行,显著降低开销。
  • 在默认设置下运行InnoDB Cluster可能会带来意外的写入开销,建议启用use_gr_notifications以最小化开销。

延伸问答

MySQL Router 8.4如何影响InnoDB Cluster的二进制日志写入?

MySQL Router 8.4会每秒刷新集群元数据,导致即使在未投入生产的情况下也会产生大量二进制日志写入。

如何减少MySQL Router的二进制日志开销?

可以通过将binlog_row_image设置为MINIMAL或启用use_gr_notifications功能来减少二进制日志的写入量。

启用use_gr_notifications功能有什么好处?

启用use_gr_notifications后,路由器的元数据缓存刷新仅在实际发生集群事件时进行,从而显著降低开销。

MySQL Router 8.4的新元数据存储方式有什么变化?

MySQL Router 8.4将完整的路由器配置存储在InnoDB Cluster元数据架构中,并以JSON格式存储,导致二进制日志开销增加。

MySQL Router的元数据刷新机制是怎样的?

MySQL Router默认每秒刷新一次元数据,更新mysql_innodb_cluster_metadata.routers表,即使集群状态没有变化。

使用ROW二进制格式时,更新一列会有什么影响?

使用ROW二进制格式时,更新一列会导致整行被写入两次,从而增加二进制日志的开销。

➡️

继续阅读