高可用性配置概览

此页面概述了 MySQL 第二代实例的高可用性 (HA) 配置。要针对高可用性配置新实例或现有实例,请参阅对实例进行高可用性配置

HA 配置概览

HA 配置(有时称为“集群”)可提供数据冗余。该配置由主地区中的主实例和次要地区中的故障转移副本组成。借助半同步复制功能,对主实例的数据和用户表格所作的所有更改都将复制到故障转移副本中。如果实例或地区发生故障,此配置可减少停机时间,并且您的数据将可继续供客户端应用使用。

HA 故障转移副本作为单独的实例进行结算。如需了解详情,请参阅价格页面

MySQL HA 配置概略图。在下文中描述。

故障转移副本

使用与主实例相同的数据库标志、用户(包括根用户)和密码、已授权的应用和网络以及数据库,配置故障转移副本。

限制

故障转移副本具有以下限制:

  • 故障转移副本必须与主实例位于同一个区域,但位于不同的地区中。
  • 您只能为每个主实例创建一个故障转移副本。
  • 您不能更改故障转移副本的激活政策或维护期。故障转移副本的维护期与主实例相同。
  • 您不能对故障转移副本启用备份。备份必须在主实例上进行。
  • 您只能从主实例创建故障转移副本,而不能通过读取副本。

故障转移概览

如果 HA 配置实例无响应,则 Cloud SQL 会自动切换为从故障转移副本传送数据。这称为故障转移。要了解是否发生了故障转移,请查看操作日志的故障转移记录。

点击相应标签以了解故障转移如何影响您的实例。

正常

MySQL 图表(故障转移前运行状况良好的实例)

故障转移

MySQL 图表(发生故障转移时的实例)

结果

MySQL 图表(故障转移后的实例及其结果)

流程

流程如下:

  1. 主实例发生故障。

    主实例每一秒都会向系统数据库执行写入操作以作为检测信号。如果有多次未检测到检测信号(且故障转移副本运行状况良好),则系统会启动故障转移。如果主实例无响应持续大约 60 秒,或主地区发生服务中断,则会发生这种情况。

  2. Cloud SQL 等待故障转移副本与主实例的状态同步。

    此步骤所需时间受复制延迟时间的影响。

  3. 故障转移副本被提升为主实例角色。

    故障转移副本现在从次要地区传送数据,而主实例名称和 IP 地址转到这一原来的故障转移副本。由于主实例 IP 地址已自动转移,因此客户端应用无需更改连接字符串即可重新连接至新的主实例。要查看您的实例从哪个地区传送数据,请转到 GCP Console 中的概览页面。

  4. 重新创建一个故障转移副本。

    系统会在运行状况良好的地区中自动重新创建新的故障转移副本,并为其保留传入的故障转移副本 IP 地址。

  5. 重新创建读取副本。

    系统会在运行状况良好的地区中自动重新创建新的读取副本,并为其保留传入的读取副本 IP 地址。

要求

要使 Cloud SQL 允许故障转移,配置必须满足以下要求:

  • 复制功能必须处于良好运行状态
  • 主实例必须处于正常运行状态(未停止、未在进行维护,也未在执行长时间运行的操作)。
  • 故障转移副本不能有任何正在进行的管理操作。如果在管理操作(如导出)执行期间或之后立即启动故障转移,则故障转移请求将失败。
  • 故障转移副本必须可用。如果启动了故障转移,但故障转移副本不可用,则故障转移请求将失败。如果请求是由于运行状况不正常的主实例引起,则该主实例将发生服务中断。
  • 复制延迟时间必须在适当范围内。如果复制延迟时间超过 10 分钟,Cloud SQL 不会为运行状况不正常的实例启动故障转移,但仍会尝试由用户启动和由于地区服务中断导致的故障转移。

配置运行状况

故障转移副本可用性

故障转移副本可用性是作为主实例指标,而不是故障转移副本指标提供的:

cloudsql.googleapis.com/database/available_for_failover

此状态也包含在主实例 Get 请求响应的 failoverReplica.available 字段中。

您可以使用 Stackdriver 查看 HA 配置指标。如需 Stackdriver 提供的 Cloud SQL 指标的完整列表,请参阅 Cloud SQL 指标列表。要详细了解如何搭配使用 Stackdriver 和 GCP,请参阅 Stackdriver 文档

复制延迟时间

概览

使用半同步复制功能时,主实例的每个写入操作均需要对故障转移副本进行相同的更新。为最大程度减少对主实例的性能影响,同时确保更改无任何丢失,故障转移副本会记录更新事件并按顺序执行更新。如果更新事件的到达速度快于故障转移副本执行它们的速度,则故障转移副本将落后于主实例。主实例执行更新与故障转移副本根据日志执行该更新之间的时间差称为“复制延迟时间”。

虽然复制延迟可能增加故障转移时间,但主实例处理的所有事务也会记录在故障转移副本的日志中;复制延迟不会导致数据丢失。

解决复制延迟问题

如果复制延迟是由于主实例写入操作突增所致,则在负载再次降低后,故障转移副本通常可赶上主实例。如果复制延迟较高但较为稳定,您可以删除故障转移副本并重新创建一个。但是,如果写入负载持续,且复制延迟继续增加,则必须采取适当措施。如果复制延迟过高,实例的 SLA 覆盖率可能会受到影响。 了解详情

由于副本以串行方式接收待处理的写入操作,它们以单线程实例运行。增加故障转移副本上 RAM 或增加其磁盘以获得更高的 I/O 吞吐量在某些情况下可能有所帮助,但如果故障转移副本长期落后于主实例,则必须对数据库进行分片,从而将写入操作分摊到多个主实例。

指标

复制延迟的状态是作为故障转移副本指标提供的:

cloudsql.googleapis.com/database/mysql/replication/seconds_behind_master

该指标的值表示副本落后于主实例的秒数。

要了解如何为该指标设置 Stackdriver 提醒,请参阅创建复制延迟提醒

备份和恢复

对实例进行高可用性配置不会影响您的备份需求或创建备份的方式,但确实会影响您恢复实例的方式。您必须先删除所有故障转移副本和读取副本,才能从备份中恢复主实例或对主实例执行时间点恢复。恢复完成后,您必须重新创建故障转移副本和读取副本。

应用和实例

非 HA 实例和 HA 实例的使用方式并无区别,因此不需要以任何特别的方式配置应用。发生故障转移时,指向相应实例的所有现有连接都会被关闭。但是,您的应用可以使用相同的连接字符串或 IP 地址重新连接;您无需在故障转移后更新您的应用。故障转移期间的一段时间内,您的应用会无法连接数据库。

要确切了解故障转移如何影响您的应用,您应手动启动故障转移

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Cloud SQL for MySQL