内容提要
新建的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的元数据刷新机制
MySQL Router每秒刷新集群元数据,即使在集群未投入生产时也会产生大量的二进制日志写入。这种机制可能导致意外的性能开销,尤其是在集群状态未发生变化时,仍会进行不必要的更新。
优化二进制日志开销的策略
为了减少二进制日志的写入量,可以将binlog_row_image设置为MINIMAL,这样只记录变化的列,而不是整行数据。此外,启用use_gr_notifications功能可以让路由器在集群发生实际事件时才刷新元数据,从而显著降低开销。
MySQL Router 8.4的改进影响
MySQL Router 8.4版本引入了新的元数据存储方式,导致二进制日志开销增加。特别是在使用JSON格式存储配置时,更新的开销会显著上升,因此在部署时需谨慎考虑这些变化对系统性能的影响。
延伸问答
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二进制格式时,更新一列会导致整行被写入两次,从而增加二进制日志的开销。