关于Azure SQL DB/Synapse备份的两项技术问题咨询
问题解答
1. 备份存储位置与跨区域恢复能力
Azure SQL DB LTR备份
- 存储位置:LTR备份的存储位置由配置LTR策略时选择的存储冗余选项决定:
- 默认采用异地冗余存储(GRS),备份会自动复制到原区域的区域配对位置;
- 也可手动指定为区域冗余存储(LRS),此时备份仅保留在原区域。
- 跨区域恢复:若数据库位于北欧区域,当整个欧洲区域(含北欧及其配对区域西欧)发生故障时,无需配置活动异地复制,即可将LTR备份恢复到任意支持Azure SQL DB的Azure区域的SQL服务器上,可通过Azure门户、PowerShell或CLI直接发起操作。
Azure Synapse Geo备份
- 存储位置:Synapse的Geo备份默认存储在原区域的区域配对位置的异地冗余存储中,自动完成备份复制。
- 跨区域恢复:若北欧及配对的西欧区域全部故障,默认自助恢复仅支持恢复到配对区域;但若是全大洲级别的故障,可联系Azure支持团队,请求将Geo备份恢复到美洲等非配对区域的Synapse工作区,无需配置活动异地复制。
2. 自动化提取备份到指定存储
Azure SQL DB和Synapse的托管备份(LTR/Geo备份)无法直接提取到自定义存储位置,但可通过恢复+导出的间接方式实现自动化:
Azure SQL DB LTR备份
- 用PowerShell获取目标LTR备份:
$backup = Get-AzSqlDatabaseLongTermRetentionBackup -ResourceGroupName "your-rg" -ServerName "your-sql-server" -DatabaseName "your-db" -OnlyLatestPerDatabase - 将备份恢复到临时SQL数据库(可选择任意区域的SQL服务器):
Restore-AzSqlDatabase -FromLongTermRetentionBackup -ResourceGroupName "target-rg" -ServerName "target-sql-server" -TargetDatabaseName "temp-restored-db" -ResourceId $backup.ResourceId - 将临时数据库导出到指定Azure存储账户:
$exportRequest = New-AzSqlDatabaseExport -ResourceGroupName "target-rg" -ServerName "target-sql-server" -DatabaseName "temp-restored-db" -StorageKeyType "StorageAccessKey" -StorageKey "your-storage-key" -StorageUri "https://your-storage.blob.core.windows.net/backups/exported-db.bacpac" -AdministratorLogin "admin-user" -AdministratorLoginPassword (ConvertTo-SecureString "admin-pass" -AsPlainText -Force) - 导出完成后删除临时数据库即可。
Azure Synapse Geo备份
- 用PowerShell将Geo备份恢复到临时Synapse工作区:
Restore-AzSynapseSqlPool -ResourceGroupName "target-rg" -WorkspaceName "target-synapse-workspace" -Name "temp-restored-pool" -FromGeoBackup -ResourceId "your-synapse-pool-resource-id" - 通过T-SQL的
BCP命令、Synapse Studio导出工具或PowerShell调用Synapse REST API,将临时SQL池的数据导出到指定存储位置。 - 导出完成后删除临时Synapse工作区/ SQL池即可。
注:上述流程可通过PowerShell脚本或Azure自动化账户实现完全自动化,需确保操作所用的服务主体拥有对应权限(SQL服务器权限、存储账户权限、Synapse工作区权限等)。
内容的提问来源于stack exchange,提问作者Priya Jha
相关产品推荐
相关产品推荐

