第1章 高可用介绍
1.1 高可用的概念
高可用是在IT生产环境里对每个系统或服务的基本要求。当用户需要在IT系统上执行操作时,系统或服务都需要保证能够正常访问。如果系统无法使用或宕机,则用户无法执行所需的操作。
互联网的发展,将企业或组织与客户联系起来,IT系统停机可能会导致企业收入降低、客户关系恶化、竞争优势减少、承担法律责任,并且会降低企业或组织的行业声誉和投资者的信心。对一个成熟的企业或组织而言,相关负责人需要事先分析IT系统生产环境的停机风险,以确定在造成无法挽回的后果之前,IT系统可以停机的最长时间。以在线交易系统为例,在其正常营业时间内的停机时间应该为零,或接近于零。
此外,影响企业或组织业务流程的另一个非常重要的因素是数据,在系统停机对企业或组织造成影响之前,企业或组织需要确定可能损失的最大数据量。读者试着想象一下,一个在线交易系统要求不能丢失任何交易信息,如果因为系统停机造成数据丢失,那么该如何进行修复?修复这些数据的成本需要多少?
高可用是指通过尽可能缩短系统的维护时间(包括日常维护和突发系统故障),使得服务器或服务能够最大限度地提供可用性。一个稳定的IT系统要求其基础设施及数据库具有高可用性。MySQL在高可用方面持续进行开发和改进,能够提供详细的管理和配置、状态报告,以及主服务器自动故障转移等功能,以确保即使主服务器发生宕机,数据仍然能够使用。MySQL的社区版中包含了上面所提到的功能和特性,用户能够通过MySQL社区版实现高可用。
MySQL高可用的发展经历了主从异步复制、主从半同步复制、组复制,发展到目前的InnoDB ReplicaSet、InnoDB Cluster及InnoDB ClusterSet(基于InnoDB Cluster衍生出InnoDB ClusterSet方案)。InnoDB Cluster是MySQL全力打造的高可用解决方案,它基于MySQL复制及其他相关组件实现。这些组件包括新的服务器插件和一些新的软件,例如,数据库层的组复制(MySQL Group Replication,以插件形式提供),用于路由连接的MySQL Router(单独安装的软件),以及用于配置和管理MySQL的MySQL Shell(单独安装的软件,包括数据库操作和管理的API)。这些组件在一起构成了MySQL高可用的最新解决方案。
本书将详细介绍MySQL高可用的演进与发展。在本章,读者需要先了解什么是高可用,以及如何通过MySQL组件来实现高可用。为了防止引起读者混淆,本书中将使用统一的术语,相关术语如下。
● Replication:MySQL的复制功能,在本书中与其相关的名称均使用“复制”。
● Master/Slave Replication:从MySQL 8.0.23开始,英文改为Source/Replica Replication。本书中相关名称为“主从复制”。
● MySQL Group Replication:MySQL的组复制功能,在本书中使用名称为“组复制”。
● MySQL InnoDB Cluster:基于组复制实现的解决方案,在本书中使用名称为InnoDB Cluster。
● MySQL Shell:新的客户端,用于简化设置和配置MySQL,在本书中使用名称为MySQL Shell。
● MySQL Router:连接路由器,在本书中使用名称为MySQL Router。
MySQL 8.0的发布方式更改为持续发布模式,因此,在每个小版本中可能会推出新功能,在本书中会标记新功能的版本,如无特殊说明,本书中所列版本号均包含在内。例如,“从MySQL 8.0.20开始”是指包含8.0.20版本在内的之后版本。