本页面介绍如何使用和升级跨区域只读副本(也就是在不同于主实例所在区域的区域中创建的副本)以进行区域迁移或灾难恢复。
概览
提升跨区域副本有两个常见场景:
- 区域迁移:执行计划迁移过程以将数据库迁移到不同区域。
- 灾难恢复:在主要实例的区域不可用的情况下,通过故障切换技术将实例转移到其他区域。
这两种使用场景都需要设置跨区域复制功能,然后提升副本。它们之间的主要区别在于副本升级的是计划升级(针对区域迁移)还是非计划升级(由于主实例已经变得不可用,需要通过故障切换技术来转移到副本区域)。
区域迁移
您可以使用跨区域副本将数据库迁移到其他区域,并将停机时间缩至最短。总体思路是在其他区域中创建副本,等待副本完成同步,升级副本,然后将客户端定向到新升级的实例。
升级所涉及的步骤与升级区域副本相同;按照这些说明操作,确保新升级的实例包含提交到原始主实例的所有事务。升级副本并验证新升级的实例是否正常运行后,更新所有数据库客户端即可连接到新实例。
灾难恢复 (DR)
跨区域副本可以在灾难恢复过程中使用。如果主实例的区域长时间不可用,您可以升级跨区域副本以故障切换到其他区域。
如需详细了解灾难恢复,请参阅 Cloud SQL 中的灾难恢复简介。
高级灾难恢复 (DR)
如果您使用的是 Cloud SQL 企业 Plus 版,则可以创建可级联副本,并将其用作高级灾难恢复 (DR) 的灾难恢复副本(DR 副本)。使用高级灾难恢复时,您可以执行副本故障切换,将主实例替换为指定的灾难恢复副本。旧主实例将成为提升后的灾难恢复副本的副本。您只能执行副本故障切换以切换到指定的灾难恢复副本。您仍然可以升级其他读取副本,而无需进行故障切换。
如需在副本故障切换后将部署恢复为原始状态并且不丢失任何数据,您可以执行切换操作。由于旧主实例是新主实例的副本,因此您可以再次切换角色以恢复旧主实例。
如需了解详情,请参阅高级灾难恢复 (DR)。高级灾难恢复目前为预览版。
验证故障切换条件
由于复制是异步进行的,因此发生区域性服务中断并尝试故障切换时,提交到主实例的某些最新事务可能会丢失(不会复制到副本)。每当主实例变得不可用时,以下步骤都将展示:(1) 如何确定在跨区域故障切换过程中可能丢失的数据量(如果有),以及 (2)如何确保提升的副本尽可能反映最近的写入内容。
您可以使用 SQL Server Management Studio (SSMS) 中的 Always On 可用性组信息中心或者使用其他工具来检查副本的复制状态。如需了解如何使用 Transact-SQL,请参阅以下内容:
- Always On 可用性组动态管理视图 - 函数
- sys.dm_hadr_availability_group_states
- sys.dm_hadr_availability_replica_states
提升读取副本
确定满足故障切换条件后,您可以将其中一个副本提升为可写的独立实例。请考虑以下场景:
- 区域 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)