提升副本以实现区域性迁移或灾难恢复

本页面介绍如何使用和升级跨区域只读副本(也就是在不同于主实例所在区域的区域中创建的副本)以进行区域迁移或灾难恢复。

概览

提升跨区域副本有两个常见场景:

  • 区域迁移:执行计划迁移过程以将数据库迁移到不同区域。
  • 灾难恢复:在主要实例的区域不可用的情况下,通过故障切换技术将实例转移到其他区域。

这两种使用场景都需要设置跨区域复制功能,然后提升副本。它们之间的主要区别在于副本升级的是计划升级(针对区域迁移)还是非计划升级(由于主实例已经变得不可用,需要通过故障切换技术来转移到副本区域)。

区域迁移

您可以使用跨区域副本将数据库迁移到其他区域,并将停机时间缩至最短。总体思路是在其他区域中创建副本,等待副本完成同步,升级副本,然后将客户端定向到新升级的实例。

升级所涉及的步骤与升级区域副本相同;按照这些说明操作,确保新升级的实例包含提交到原始主实例的所有事务。升级副本并验证新升级的实例是否正常运行后,更新所有数据库客户端即可连接到新实例。

灾难恢复 (DR)

跨区域副本可以在灾难恢复过程中使用。如果主实例的区域长时间不可用,您可以升级跨区域副本以通过故障切换技术转移到其他区域。

如需详细了解灾难恢复,请参阅 Cloud SQL 中的灾难恢复简介

验证故障切换条件

由于复制是异步进行的,因此发生区域性服务中断并尝试故障切换时,提交到主实例的某些最新事务可能会丢失(不会复制到副本)。每当主实例变得不可用时,以下步骤都将展示:(1) 如何确定在跨区域故障切换过程中可能丢失的数据量(如果有),以及 (2)如何确保提升的副本尽可能反映最近的写入内容。

您可以使用 SQL Server Management Studio (SSMS) 中的 Always On 可用性组信息中心或者使用其他工具来检查副本的复制状态。如需了解如何使用 Transact-SQL,请参阅以下内容:

提升读取副本

确定满足故障切换条件后,您可以将其中一个副本提升为可写的独立实例。请考虑以下场景:

  • 区域 A (us-central1) 具有一个高可用性主实例 (db-a-0)
  • 区域 B (us-west1) 具有 db-a-0 的高可用性跨区域副本 (db-b-1)
  • 区域 C (us-east1) 具有 db-a-0 的跨区域副本 (db-c-1)

您可以选择将区域 B 中的 db-b-1 副本提升为独立的可写实例。

如需了解详细说明,请参阅提升副本

确保机器类型合适

通过监控实例上的指标(例如 CPU 和内存用量),确保新提升的实例的机器类型适合其工作负载。如果新提升的实例小于其先前的主实例,我们建议您调整提升的实例的大小以与先前的主实例匹配,以便它可以处理相同的负载量。

为已提升的实例启用高可用性

对于灾难恢复配置,我们建议您将要提升的副本配置为高可用性副本。或者,将新提升的实例配置为高可用性。如果您选择不将读取副本配置为高可用性,则还可以在提升时将实例配置为高可用性。

提升时,系统会自动为读取副本配置备份。为高可用性配置读取副本的方式与为主实例配置的方式相同。如需了解详情,请参阅配置实例以实现高可用性

重新创建其他副本

将副本升级为主实例后,您需要重新创建上述主实例的任何其他副本。例如,请考虑上文中提到的配置,下面再重复一遍:

  • 区域 A (us-central1) 具有一个高可用性主实例 (db-a-0)
  • 区域 B (us-west1) 具有 db-a-0 的跨区域副本 (db-b-1)
  • 区域 C (us-east1) 具有 db-a-0 的跨区域副本 (db-c-1)

如果主实例 (db-a-0) 不再可用,您可以将区域 B 中的副本提升为主实例。如需再次向区域 A 和 C 中添加额外的副本,请删除旧实例(A 中之前的主实例和 C 中的副本),然后根据 B 中的新主实例创建新的只读副本

生成的配置将如下所示:

  • 区域 A (us-central1) 现在具有一个跨区域副本 (db-a-1)
  • 区域 B (us-west1) 现在具有主实例 (db-b-1)
  • 区域 C (us-east1) 现在具有一个新的跨区域副本 (db-c-2)