Azure SQL数据库离线备份至.bacpac的低影响方案及全量备份查询
查看Azure SQL每周全量自动备份
Azure SQL的自动全量备份会按服务层级保留对应时长(Basic层级7天,Standard/Premium层级35天),你可以通过以下方式找到一周前的全量备份:
- Azure门户操作:进入目标Azure SQL数据库,左侧菜单选择「备份」,切换到「自动备份」标签页,即可看到全量、差异、日志备份的完整列表。通过时间筛选器定位一周前的全量备份条目。
- Azure CLI命令:执行以下命令过滤全量备份:
输出结果会包含备份的时间戳、类型等信息,找到对应一周前的记录即可。az sql db restore show-backups --resource-group <你的资源组名> --server <你的SQL服务器名> --database <你的数据库名> --backup-type Full - PowerShell命令:通过以下命令列出所有全量备份点:
从结果中匹配一周前的备份时间点。Get-AzSqlDatabaseRestorePoint -ResourceGroupName <你的资源组名> -ServerName <你的SQL服务器名> -DatabaseName <你的数据库名> | Where-Object {$_.RestorePointType -eq 'Full'}
生成Bacpac文件且不影响在线性能的最佳方法
针对导出时DTU突增影响主库的问题,推荐以下几种低影响方案:
- 基于只读副本导出
- 为你的主库创建只读副本(需Standard/Premium层级支持),副本与主库同步但仅提供只读访问,导出操作完全在副本上执行,不会消耗主库资源。
- 使用
az sql export指定副本数据库,或用SqlPackage工具连接副本端点:az sql export --resource-group <你的资源组名> --server <你的SQL服务器名> --database <副本数据库名> --storage-key-type StorageAccessKey --storage-key <Azure存储密钥> --storage-uri "https://<存储账户名>.blob.core.windows.net/<容器名>/<备份文件名>.bacpac"
- 使用SqlPackage工具本地导出
下载SqlPackage.exe,连接到只读副本执行导出,可自主控制导出速率,避免瞬间占用过多资源。导出到本地后再上传至其他云服务:SqlPackage.exe /Action:Export /SourceServerName:<你的SQL服务器名>.database.windows.net /SourceDatabaseName:<副本数据库名> /SourceUser:<管理员账户> /SourcePassword:<密码> /TargetFile:"C:\backups\<备份文件名>.bacpac" - 迁移至第三方云存储
导出完成后,使用对应云服务的CLI工具上传文件:- 上传至AWS S3:
aws s3 cp <本地bacpac路径> s3://<你的S3桶名>/backups/ - 上传至阿里云OSS:
ossutil cp <本地bacpac路径> oss://<你的OSS桶名>/backups/
- 上传至AWS S3:
注意:导出前需确保副本数据已同步完成,大数据库导出建议选择业务低峰期执行,避免副本同步压力过大。
内容的提问来源于stack exchange,提问作者Melissa
相关产品推荐
相关产品推荐

