本页面简要介绍了 Cloud SQL 实例的高可用性 (HA) 配置。如需配置新的高可用性实例或为现有实例启用高可用性,请参阅对实例启用和停用高可用性。
HA 配置概览
高可用性配置的目的是当某个可用区或实例不可用时减少停机时间。在可用区级服务中断期间或硬件出现问题时,可能会发生这种情况。借助 HA,您的数据可以继续供客户端应用使用。
HA 配置提供数据冗余。进行了 HA 配置的 Cloud SQL 实例也称为区域实例,在配置的区域内具有主可用区和辅助可用区*。在区域实例中,该配置由主实例和备用实例组成。通过将数据同步复制到每个可用区的永久性磁盘,对主实例执行的所有写入操作都会在事务被报告为已提交之前复制到两个可用区中的磁盘上。如果实例或可用区发生故障,备用实例将成为新的主实例。然后,用户会被重新路由到新的主实例。此过程称为故障切换failover。
执行故障切换后,接管故障切换操作的实例会继续作为主实例,即使原始实例恢复在线状态后也是如此。当中断服务的可用区或实例再次可用时,原始的主实例会被销毁并重新创建。然后,该实例会成为新的备用实例。如果以后执行故障切换,则原始可用区中的原始实例会通过故障切换操作取代新实例。
如果您需要在中断服务的可用区中具有主实例,可以执行故障恢复。故障恢复会执行与故障切换相同的步骤,不过会反转方向,将流量重新路由到原始实例。要执行故障恢复,请执行启动故障切换中的过程。
区域永久性磁盘对至少具有一个专用 CPU 的 Cloud SQL 高可用性配置的支持全方位覆盖服务等级协议 (SLA)。HA 配置实例的费用是独立实例价格的两倍。此价格包括 CPU、RAM 和存储费用。如需了解详情,请参阅价格页面。
* 墨西哥、蒙特利尔和大阪区域有三个可用区,每个区域的可用区位于一个或两个物理数据中心内。 这些区域正在扩展到至少三个物理数据中心。如需了解详情,请参阅 Cloud 位置和 Google Cloud Platform SLA。如需提高工作负载的可靠性,请考虑多区域部署。
只读副本
如果读取副本具有可用性,您可以在副本上启用 HA。将此类副本升级为主实例后,该副本将设置为高可用性实例。
在可用区服务中断期间,流量会停止读取可用区中的副本。在该可用区再次可用后,其中的任何读取副本都将继续从主实例进行复制。如果读取副本不在服务中断的可用区中,则它们会在备用实例成为主实例时连接到该实例。
最佳做法是考虑将一些读取副本放在与主实例和备用实例不同的可用区中。例如,如果您在可用区 A 中有一个主实例,在可用区 B 中有一个备用实例,则在可用区 C 中放置一个读取副本以提高可靠性。这种做法可确保读取副本即使在主实例的可用区发生故障时也能继续运行。您还应在客户端应用中添加业务逻辑,以便在读取副本不可用时向主实例发送读取操作。
故障切换概览
如果一个高可用性配置实例无响应,则 Cloud SQL 会自动切换为从备用实例传送数据。如需了解是否发生了故障切换,请查看操作日志故障切换历史记录。
详细了解如何在日志浏览器中构建查询。如果您需要有关某项操作的详细信息(例如执行操作的用户),则必须启用审核日志记录。
点击相应标签以了解故障切换如何影响您的实例。
正常
故障切换
故障切换后
故障恢复
流程
流程如下:
主实例或地区发生故障。
检测信号系统每秒都会检测主实例的运行状况是否良好。如果有多次未检测到检测信号,则系统会启动故障切换。
备用实例现在会在重新连接后传送数据。
通过与主实例共享的静态 IP 地址,备用实例现在可从备用地区传送数据。
要求
要使 Cloud SQL 允许故障切换,配置必须满足以下要求:
- 主实例必须处于正常运行状态(未停止、未在进行维护,也未在执行长时间运行的 Cloud SQL 实例操作,例如备份操作)。
- 辅助地区和备用实例都必须处于良好运行状态。当备用实例不响应时,系统会阻止故障切换操作。在 Cloud SQL 修复备用实例且辅助地区可用后,Cloud SQL 也会允许进行故障切换。
备份和恢复
强烈建议您使用自动备份以实现高可用性。
应用和实例
非 HA 实例和 HA 实例的使用方式并无区别,因此不需要以任何特别的方式配置应用。发生故障切换时,主实例和只读副本的所有现有连接都会被关闭,而重新建立与主实例的连接大约需要 60 秒的时间才能完成。您的应用可以使用相同的连接字符串或 IP 地址重新连接;您无需在故障切换后更新您的应用。
如需确切了解故障切换对您的应用有何影响,请手动启动故障切换。
维护停机时间
维护事件会影响采用 HA 配置的主实例,具体方式与其他实例相同。您的主实例可能会短时间停机。如需详细了解维护对高可用性实例的影响,请参阅维护的工作原理。为了最大限度地减少对服务的影响,请更改维护设置以控制停机发生时间。
后续步骤
- 对实例启用和停用高可用性。
- 启动故障转移。
- 详细了解如何管理数据库连接。
- 详细了解 Cloud SQL 中的区域和可用区。