
金融应用场景下跨数据中心的MGR架构方案(2)
内容提纲
• 1、什么是Async Replication Auto failover
• 2、基于MGR的两地三中心数据库架构方案
• 3,配、置Async Replication Auto failover
• 3.1、创建复制通道
• 3.2、对复制通道添加多个复制源
• 4、模拟故障,确认可自动切换
如何在多个数据中心部署多套MGR集群,并实现故障快速切换。
上篇文章介绍了如何在多数据中心部署多套MGR集群,并构建集群间的复制通道。这样一旦主AZ不可用时,在校验完数据后,就可以切换到备用AZ的MGR集群,非常方便。
本文我们继续深入介绍如何利用 Async Replication Auto failover 实现故障自动转移的。
1、什么是Async Replication Auto failover
从MySQL 8.0.22开始,推出一个新特性"Async Replication Auto failover",当MGR集群发生故障时,其从库可以更方便的实现快速自动切主。直译过来是“异步复制自动故障转移”,但实际上它也是支持半同步复制场景的。
详细介绍见官方文档 17.4.9 Switching Sources with Asynchronous Connection Failover
2、基于MGR的两地三中心数据库架构方案
在两地三中心架构下,可以采用下面这个部署方案
在这个架构方案里,MGR-B可以采用 异步复制 或 增强半同步复制 通道从MGR-A复制数据,这要取决于两个AZ之间的网络状况。
在金融应用场景下,这个网络条件一般可以得到保障,因此优先采用增强版同步方式。
而跨城异地AZ里的MGR C则因为网络延迟较大,大概率会采用异步复制方式。
在上述方案中,不管是MGR-B还是C,都面临一个问题:那就是复制源指向的主机实例,发生故障不可用之后,如何快速切换,实现自动故障转移。
在以往,只能靠第三方工具实现切换。
在MySQL 8.0.22新增"Async Replication Auto failover"特性后,就没这个烦恼了。
其工作机制是 在一个复制通道上设置多个复制源(source),它还支持对多个源设置不同权重。当发现主复制源发生故障异常中断后(会先尝试重连几次),即可实现自动切换到新的复制源。当原来的复制源恢复后,如果其权重更高,还会再切换回去。
3、配置Async Replication Auto failover
部署的过程很简单,几条命令就搞定了。
3.1、创建复制通道
按照常规方式,在从实例上(本案以MGR-B为例)创建一个复制通道
确认添加的复制通道生效了:
3.2、对复制通道添加多个复制源
接下来再对这个复制通道添加多个复制源(多次调用该UDF即可):
确认多个复制源生效:
启动该复制通道:
确认复制通道和MGR的状态都正常:
执行 SHOW REPLICA STATUS 查看状态:
先记住上面输出结果中的 Source_Host 和 Source_UUID 等信息,下面模拟一次复制源服务器宕机后,自动切换复制源的场景。
4、模拟故障,确认可自动切换
在当前复制源服务器上,执行 kill -9 杀掉 mysqld 进程,然后就能看到从服务器上有类似如下日志:
再次执行 SHOW REPLICA STATUS 确认复制源切换了:
因为3个复制源的权重设置为一样,所以当原来的复制源服务器宕机恢复后,不会再切换回去。而如果旧的复制源服务器权重设置较高的话,当他恢复后,会再次发生切换,切回原来的源:
这就很方便的可以实现自动故障转移了。
现在,我们利用MGR + 增强半同步复制 + 自动故障转移 构建了一套金融级应用场景下的两地多中心数据库架构方案。推荐选用可靠性、稳定性更高的GreatSQL,可以更放心的使用MGR(GreatSQL,打造更好的MGR生态)。
后面再继续介绍基于MGR的其他架构解决方案。
本文转载自公共号GreatSQL社区。
