3、上面已经提到节点退出MGR时super_read_only会设置为true,但这无法阻塞relay-log中事务的回放,如果该节点上有异步复制通道,那么该节点还会有原因不断的数据更新,而退出集群后更新的数据对集群的其他节点是不可见的,这显然也是无法被接受,因此,在节点退出MGR集群时,其上的异步复制通道也会被停止。
4、最后,若配置mysqld重启后自动启动MGR和异步复制通道,需要确保启动顺序协调一致。原则是确保MGR应该先于异步复制通道启动,MGR节点变为ONLINE状态后再启动异步复制通道。主要考虑三点:a、先确保MGR在线,再启动异步复制;b、如果MGR启动失败,那么异步复制也必须返回失败;c、如果在单主模式Secondary节点上配置了自动启动,那么需要保证MGR启动成功,异步复制返回失败。
最后介绍下InnoSQL在这方面的增强。InnoSQL增加了一个参数group_replication_readonly_after_reconfig,该参数与官方提供的group_replication_force_members配合使用。当MGR集群因为异常导致只有一个节点在线时,由于失去majority导致该节点会阻塞写事务的提交,group_replication_force_members参数可以通过重配置,让MGR集群成为只有该节点的新集群,从而能够正常执行写事务。但正因为此时集群中只有一个节点,写入的数据是极不可靠的。
对于RDS云服务中3节点的MGR金融版实例,2个节点下线后,存活的节点本就应该只提供读服务。若因为配置group_replication_force_members导致系统变为可写状态,这显然是不合适的。group_replication_readonly_after_reconfig就是为了控制group_replication_force_members后节点的读写行为,如果启用,那么重配置后,节点会变为只读状态,在实现上也是通过设置super_read_only为true实现。
网易云数据库RDS是一种稳定可靠、可弹性伸缩的在线关系型数据库服务,当前支持MySQL引擎,提供基础版,高可用版,金融版针对不同业务场景的高可用解决方案,同时提供多重安全防护措施,性能监控体系,专业的数据库备份、恢复及优化方案,使您能专注于应用开发和业务发展。