将 Azure SQL 数据库迁移到可用性区域支持
本指南介绍如何将 Azure SQL 数据库从非可用性区域支持迁移到可用性支持。
为 Azure SQL 数据库启用区域冗余可确保高可用性,因为该数据库利用 Azure 可用性区域在 Azure 区域内的多个物理位置复制数据。 通过选择区域冗余,可以在不更改应用程序逻辑的情况下,使数据库和弹性池能够抵御范围更广的失败,例如灾难性数据中心故障。
先决条件
在迁移到可用性区域支持之前,请参阅下表以确保 Azure SQL 数据库处于受支持的服务层级和部署模型中。 确保在支持可用性区域的区域提供层级和模型。
服务层 | 部署模型 | 区域冗余可用性 |
---|---|---|
高级 | 单一数据库或弹性池 | 支持可用性区域的区域 |
业务关键 | 单一数据库或弹性池 | 支持可用性区域的区域 |
常规用途 | 单一数据库或弹性池 | 支持可用性区域的特定区域 |
超大规模 | 单一数据库 | 支持可用性区域的区域 |
停机要求
针对“高级”、“业务关键”和“常规用途”服务层级的迁移是在线操作,在迁移结束时会短暂断开连接以完成迁移过程。 如果已实现标准暂时性错误的重试逻辑,那么不会注意到故障转移。
对于“超大规模”服务层级,区域冗余支持只能在数据库创建期间指定,并且在资源预配后不能修改。 如果希望转移到可用性区域支持,则需要使用数据库拷贝、时间点还原或异地副本来传输数据。 如果目标数据库与源数据库位于不同的区域,或者目标数据库的数据备份存储冗余与源数据库不同,则故障时间与数据操作的大小成正比。
迁移(“高级”、“业务关键”和“常规用途”)
对于“高级”、“业务关键”和“常规用途”服务层级,可以迁移到区域冗余。
按照以下步骤对单一数据库或弹性池执行迁移。
迁移单一数据库
转到 Azure 门户以查找数据库。 搜索并选择“SQL 数据库”。
选择要迁移的数据库。
在“设置”下,选择“计算 + 存储”。
选择“是”作为“是否要使此数据库区域成为冗余?”
选择“应用”。
等待在 Azure 门户顶部菜单的“通知”中接收操作完成通知。
要验证是否已启用区域冗余,请选择“概述”,然后选择“属性”。
在“可用性”部分下,确认区域冗余设置为“已启用”。
迁移弹性池
重要
为弹性池启用区域冗余支持会使池中的所有数据库都成为冗余。
转到 Azure 门户以查找并选择要迁移的弹性池。
选择“设置”,然后选择“配置”。
选择“是”作为“是否要使此弹性池区域冗余?”。
选择“保存”。
等待在 Azure 门户顶部菜单的“通知”中接收操作完成通知。
要验证是否已启用区域冗余,请选择“配置”,然后选择“池设置”。
区域冗余选项应设置为“是”。
重新部署(超大规模)
对于“超大规模”服务层级,区域冗余支持只能在数据库创建期间指定,并且在配置数据库后不能修改。 如果希望获得区域冗余支持,则需要从现有“超大规模”服务层级单一数据库执行数据传输。 要执行传输并启用区域冗余选项,必须使用数据库副本、时间点还原或异地副本创建克隆。
重新部署注意事项
有两种重新部署模式(联机和脱机):
数据库复制和时间点还原方法(脱机模式)在某个时间点创建事务一致的数据库。 因此,在启动复制或还原操作后执行的任何数据更改在复制或还原的数据库上都不可用。
异地副本方法(在线模式)是重新部署,其中源的任何数据更改都会同步到目标。
必须更新应用程序的连接字符串以指向区域冗余数据库。
重新部署单一数据库
数据库复制
要创建数据库副本并使用 Azure 门户、PowerShell 或 Azure CLI 启用区域冗余,请按照在 Azure SQL 数据库中复制数据库的事务一致性副本中的说明进行操作。
时间点还原
要创建时间点数据库还原并使用 Azure 门户、PowerShell 或 Azure CLI 启用区域冗余,请按照时间点还原中的说明进行操作。
异地副本
要创建数据库的异地副本,请执行以下操作:
按照配置活动异地复制和故障转移(Azure SQL 数据库)中的 Azure 门户、PowerShell 或 Azure CLI 的说明进行操作,并在“计算 + 存储”下启用区域冗余
副本已设定种子,设定数据种子所花费的时间取决于源数据库的大小。 可以在 Azure 门户中监视种子设定的状态,也可以在副本数据库上运行以下 TSQL 查询:
SELECT * FROM sys.dm_geo_replication_link_status; SELECT * FROM sys.dm_operation_status;
数据库种子设定完成后,执行已计划的(无数据丢失)故障转移,使区域冗余目标数据库成为主数据库。 使用 sys.dm_geo_replication_link_status 查看异地复制状态。 当辅助数据库处于事务一致状态时,
replication_state_desc
为CATCH_UP
。 在 sys.dm_operation_status 动态管理视图中,当种子设定操作完成时,查找state_desc
为COMPLETED
。更新应用程序的连接字符串中的服务器名称,以反映新的区域冗余数据库。
要进行清理,请考虑从异地副本关系中删除原始非区域冗余数据库。 可以选择删除它。
禁用区域冗余
若要为单一数据库或弹性池禁用区域冗余,可以使用门户或 ARM API。
若要禁用超大规模服务层级的区域冗余,可以反向执行重新部署(超大规模)中所述的步骤。
若要使用 Azure 门户禁用区域冗余,请执行以下操作:
转到 Azure 门户,查找并选择不再需要区域冗余的弹性池。
选择“设置”,然后选择“配置”。
对于“是否要使此弹性池区域冗余?”,请选择“否”。
选择“保存”。
若要使用 PowerShell 禁用区域冗余,请执行以下操作:
Set-AzSqlElasticpool -ResourceGroupName "RSETLEM-AzureSQLDB" -ServerName "rs-az-testserver1" -ElasticPoolName "testep10" -ZoneRedundant:$false
若要使用 Azure CLI 禁用区域冗余,请执行以下操作:
az sql elastic-pool update --resource-group "RSETLEM-AzureSQLDB" --server "rs-az-testserver1" --name "testep10" --zone-redundant false
若要禁用 ARM 的区域冗余,请参阅数据库 - 在 ARM 中创建或更新并使用 properties.zoneRedundant
属性。