作者:MiguelAraújo 译:徐轶韬
MySQL Router是InnoDB Cluster / ReplicaSet的核心组件,可将客户端流量自动路由到数据库组中的正确实例。MySQL Router可以自动适应拓扑更改,但在某些情况下,我们可以使用特定属性标记一个实例,这个属性将更改路由器的默认行为。
在8.0.21版本中,我们在AdminAPI引入了标记框架,通过它我们能够引入非常需要的功能:
暂时将实例标记为无法接收流量这一功能非常重要,因为它可以:
执行MySQL的滚动升级需要使脱机实例。但必须注意,可能会产生与该实例的连接失败。从路由目标候选列表中排除该实例后,DBA可以安全地使服务器脱机,并确保没有应用程序/路由器流量发送到该服务器。
根据维护任务的不同,甚至可能不需要使服务器脱机。在这之前,这意味着停止组复制或MySQL本身,以避免破坏可能影响性能的传入流量。而现在通过从路由候选中隐藏该实例,可以完全避免这种情况。
考虑到InnoDB ReplicaSet基于异步复制,复制滞后是要考虑的常见因素。如果某个实例滞后,DBA可能希望对应用程序隐藏它,直到它赶上来为止,从而减少了复制滞后。这同样适用于InnoDB Cluster,尽管组复制实际上是同步的,并且复制滞后的度量方式有所不同。
更复杂的体系结构包括用于备份或灾难恢复的服务器。这些服务器不应承担任何工作负载,或者应在执行备份时暂时从客户端流量中排除这些服务器。
现在可以通过将这些服务器从路由候选列表中排除来实现。
注意:Secondary2用于进行备份,因此DBA将其从传入的客户端连接中排除
在特定实例上生成数据报表可能会非常耗时,并且会影响实例的性能。因此,推荐的方法是将该服务器从路由候选列表中排除。
MySQL Router不断地对配置更改汇集元数据,因此使用标记框架无疑是允许此类自定义的正确方法。
借助AdminAPI及其易用性,用户现在可以通过简单地调用.setInstanceOption()来为实例设置标签。
为了从客户端流量中隐藏实例,我们引入了两个“内置”标签,使您可以立即更改路由器的行为:
_hidden
_disconnect_existing_sessions_when_hidden
通过_hidden
在特定实例上启用标签,您可以指示MySQL Router 将实例从客户端应用程序的候选目标列表中排除。考虑到MySQL路由器不断轮询元数据,其效果实际上是立竿见影的。
通过_disconnect_existing_sessions_when_hidden
在特定实例上启用标签,您可以指示路由器断开与标记为隐藏的实例的连接。
注意:默认情况下
_disconnect_existing_sessions_when_hidden
为启用。
对于MySQL InnoDB Cluster和ReplicaSet的任何生产部署,隐藏实例无疑是一项重要功能。它可以执行许多繁琐的任务,而又不会中断客户端的流量,最重要的是,可以进行更复杂的设置。
请将您的部署升级到8.0.21,并享受令人兴奋的新功能!
感谢您 使用 MySQL!
本文分享自 MySQL解决方案工程师 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有