mysql cluster真实案例_隐藏MySQL InnoDB Cluster / ReplicaSet实例

作者:MiguelAraújo 译:徐轶韬

MySQL Router是InnoDB Cluster / ReplicaSet的核心组件,可将客户端流量自动路由到数据库组中的正确实例。MySQL Router可以自动适应拓扑更改,但在某些情况下,我们可以使用特定属性标记一个实例,这个属性将更改路由器的默认行为。

在8.0.21版本中,我们在AdminAPI引入了标记框架,通过它我们能够引入非常需要的功能:

隐藏MySQL InnoDB Cluster / ReplicaSet实例

为什么要隐藏实例?

暂时将实例标记为无法接收流量这一功能非常重要,因为它可以:

在服务器上执行滚动升级而不会中断传入流量

在服务器上执行维护操作或配置更改,而不必停止MySQL

将服务器从滞后的客户端工作负载中排除

排除出于灾难恢复目的而位于不同区域/区域中的数据库服务器

在进行备份或生成报告时,从读取的工作负载中排除SECONDARY服务器,以避免影响其他查询。

升级/维护

执行MySQL的滚动升级需要使脱机实例。但必须注意,可能会产生与该实例的连接失败。从路由目标候选列表中排除该实例后,DBA可以安全地使服务器脱机,并确保没有应用程序/路由器流量发送到该服务器。

136be34314a57ba454d97dfa8ef5d707.png

根据维护任务的不同,甚至可能不需要使服务器脱机。在这之前,这意味着停止组复制或MySQL本身,以避免破坏可能影响性能的传入流量。而现在通过从路由候选中隐藏该实例,可以完全避免这种情况。

复制滞后

考虑到InnoDB ReplicaSet基于异步复制,复制滞后是要考虑的常见因素。如果某个实例滞后,DBA可能希望对应用程序隐藏它,直到它赶上来为止,从而减少了复制滞后。这同样适用于InnoDB Cluster,尽管组复制实际上是同步的,并且复制滞后的度量方式有所不同。

灾难恢复和备份

更复杂的体系结构包括用于备份或灾难恢复的服务器。这些服务器不应承担任何工作负载,或者应在执行备份时暂时从客户端流量中排除这些服务器。

现在可以通过将这些服务器从路由候选列表中排除来实现。

136be34314a57ba454d97dfa8ef5d707.png

注意:Secondary2用于进行备份,因此DBA将其从传入的客户端连接中排除

数据报表

在特定实例上生成数据报表可能会非常耗时,并且会影响实例的性能。因此,推荐的方法是将该服务器从路由候选列表中排除。

如何将服务器从候选列表中排除呢?

MySQL Router不断地对配置更改汇集元数据,因此使用标记框架无疑是允许此类自定义的正确方法。

借助AdminAPI及其易用性,用户现在可以通过简单地调用.setInstanceOption()来为实例设置标签。

为了从客户端流量中隐藏实例,我们引入了两个“内置”标签,使您可以立即更改路由器的行为:

_hidden

_disconnect_existing_sessions_when_hidden

通过_hidden在特定实例上启用标签,您可以指示MySQL Router 将实例从客户端应用程序的候选目标列表中排除。考虑到MySQL路由器不断轮询元数据,其效果实际上是立竿见影的。

136be34314a57ba454d97dfa8ef5d707.png

通过_disconnect_existing_sessions_when_hidden在特定实例上启用标签,您可以指示路由器断开与标记为隐藏的实例的连接。

注意:默认情况下_disconnect_existing_sessions_when_hidden为启用。

136be34314a57ba454d97dfa8ef5d707.png

结论

对于MySQL InnoDB Cluster和ReplicaSet的任何生产部署,隐藏实例无疑是一项重要功能。它可以执行许多繁琐的任务,而又不会中断客户端的流量,最重要的是,可以进行更复杂的设置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值