通过将系统状态复制到一组服务器,可以创建具有冗余功能的容错系统。即使其中一些服务器随后出现故障,只要不是全部或多数服务器出现故障,系统仍然可用。根据出现故障的服务器数量,组可能会降低性能或可伸缩性,但仍然可用。服务器故障是隔离和独立的。它们由一个组成员服务跟踪,该服务依赖于一个分布式故障检测器,当任何服务器离开组时,该检测器能够发出信号,无论是自愿的还是由于意外停止。有一个分布式恢复过程,以确保当服务器加入组时,它们会自动更新。不需要服务器故障转移,而且无处不在的多源更新特性确保了即使是更新也不会在单个服务器故障的情况下被阻塞。总之,MySQL组复制保证了数据库服务是持续可用的。
重要的是要理解,尽管数据库服务是可用的,但在意外的服务器退出事件中,连接到它的那些客户机必须被重定向或故障转移到不同的服务器。这不是Group Replication试图解决的问题。连接器、负载平衡器、路由器或某种形式的中间件更适合处理这个问题。例如看到MySQL 8.0路由器.
总之,MySQL组复制提供了一个高可用性、高弹性、可靠的MySQL服务。
提示
要部署多个MySQL实例,可以使用InnoDB集群这使你可以轻松地管理一组MySQL服务器实例MySQL壳.InnoDB Cluster将MySQL Group Replication封装在一个编程环境中,使您能够轻松部署MySQL实例集群以实现高可用性。此外,InnoDB集群与MySQL路由器,它使您的应用程序无需编写自己的故障转移过程就可以连接到集群。然而,对于不需要高可用性的类似用例,您可以使用InnoDB ReplicaSet.可以找到MySQL Shell的安装说明在这里.