MySQL 5.6 参考手册  /  第 16 章高可用性和可扩展性

第 16 章高可用性和可扩展性

数据是当今网络、移动、社交、企业和云应用程序的货币。确保数据始终可用是任何组织的首要任务。几分钟的停机时间可能会导致收入和声誉的重大损失。

没有“一刀切”的方法来提供高可用性 (HA)。独特的应用程序属性、业务需求、运营能力和遗留基础架构都会影响 HA 技术选择。技术只是实现 HA 的要素之一:人员和流程与技术本身一样重要。

MySQL 被部署到许多要求可用性和可伸缩性的应用程序中。可用性是指处理主机上的故障并在必要时从中恢复的能力,包括 MySQL、操作系统或可能导致停机的硬件和维护活动的故障。 可伸缩性是指将数据库和应用程序查询负载分布到多个 MySQL 服务器的能力。

由于每个应用程序都有不同的操作和可用性要求,MySQL 提供一系列经过认证和支持的解决方案,提供适当级别的高可用性 (HA) 和可扩展性以满足服务级别要求。此类解决方案从复制扩展到虚拟化和地理冗余的多数据中心解决方案,可提供 99.999% 的正常运行时间。

为应用程序选择正确的高可用性解决方案在很大程度上取决于:

  • 所需的可用性级别。

  • 正在部署的应用程序类型。

  • 在您自己的环境中接受的最佳实践。

MySQL 支持的主要解决方案包括:

使用第三方解决方案可获得更多选项。

用于实现高可用性数据库服务的每种架构都因其提供的正常运行时间级别而有所不同。这些架构可以分为三大类:

  • 数据复制。

  • 集群和虚拟化系统。

  • 无共享、地理复制的集群。

如下图所示,这些架构中的每一个都提供了更高级别的正常运行时间,这必须与每个架构可能产生的潜在更高级别的成本和复杂性相平衡。简单地部署高可用性架构并不能保证实际交付 HA。事实上,与简单的数据复制解决方案相比,实施和维护不当的无共享集群很容易提供较低级别的可用性。

图 16.1 权衡:成本和复杂性与可用性

显示成本和复杂性与可用性的折线图。 随着正常运行时间百分比中“9”的数量增加,成本和复杂性也随之增加,从基本复制发展到集群和虚拟化配置,再到跨地理区域复制的无共享集群。 不同类型的组织需要不同的可用性“9”,从 3 个 9 的 Internet 服务提供商和主流企业,4 个 9 的在线服务,到 5 个 9 的电子商务、电信和军事应用程序。

下表比较了各种 MySQL 解决方案的 HA 和 Scalability 能力:

表 16.1 MySQL HA 方案的特性比较

要求 MySQL复制 MySQL集群
可用性
平台支持 全部受 MySQL 服务器支持 ( https://www.mysql.com/support/supportedplatforms/database.html ) 全部受 MySQL 集群支持 ( https://www.mysql.com/support/supportedplatforms/cluster.html )
自动 IP 故障转移 不 取决于连接器和配置
自动数据库故障转移 不 是的
自动数据重新同步 不 是的
典型的故障转移时间 用户/脚本依赖 1 秒或更少
同步复制 不,异步和半同步 是的
共享存储 不,分布式 不,分布式
地理冗余支持 是的 是的,通过 MySQL 复制
在线更新架构 不 是的
可扩展性
节点数 一主多从 255
内置负载均衡 读取,通过 MySQL 复制 是的,读写
支持读取密集型工作负载 是的 是的
支持写入密集型工作负载 是的,通过应用程序级分片 是的,通过自动分片
在线扩展(添加节点、重新分区等) 不 是的