适用于:
Azure SQL 数据库
借助 Azure SQL 数据库,可以设置长期备份保留 (LTR) 策略以自动将备份保留在单独的 Azure Blob 存储容器中最多 10 年。 然后,可以通过 Azure 门户、Azure CLI 或 PowerShell 使用这些备份来恢复数据库。
先决条件
为 PowerShell 准备环境。
重要
PowerShell Azure 资源管理器(AzureRM)模块已于 2024 年 2 月 29 日弃用。 所有未来的开发都应使用 Az.Sql 模块。 建议用户从 AzureRM 迁移到 Az PowerShell 模块,以确保持续支持和更新。 不再维护或支持 AzureRM 模块。 Az PowerShell 模块和 AzureRM 模块中命令的参数基本相同。 有关兼容性的详细信息,请参阅 介绍新的 Az PowerShell 模块。
对于 Get-AzSqlDatabaseLongTermRetentionBackup
和 Restore-AzSqlDatabase
,你需要是以下角色之一的成员:
对于 Remove-AzSqlDatabaseLongTermRetentionBackup
,你需要是以下角色之一的成员:
权限
要查看和还原 LTR 备份,需要:
若要删除 LTR 备份,你需要是以下角色之一的成员:
注意
“SQL Server 参与者”角色没有删除 LTR 备份的权限。
可以在“订阅”或“资源组”范围内授予 Azure 基于角色的访问控制 (RBAC) 权限。 但是,若要访问属于已删除服务器的 LTR 备份,必须在该服务器的“订阅”范围内授予此权限。
Microsoft.Sql/locations/longTermRetentionServers/longTermRetentionDatabases/longTermRetentionBackups/delete
创建长期保留策略
可以对 SQL 数据库进行配置,使其保留自动备份的时间长于你的服务层级的保留期。
在 Azure 门户中,导航到服务器,然后选择“备份”。 选择“保留策略”选项卡以修改备份保留设置。
在“保留策略”选项卡上,选择要为其设置或修改长期备份保留策略的数据库。 未选定的数据库不受影响。
在“配置策略”窗格中,为每周、每月或每年备份指定所需的保留期。 选择的保留期为“0”表明不应设置长期备份保留期。
选择“应用”以将所选保留设置应用于所有选定数据库。
重要
启用长期备份保留策略时,最长可能需要 7 天以后才能查看和还原第一个备份。 有关 LTR 备份频率的详细信息,请参阅长期备份保留。
运行 az sql db ltr-policy set 命令,以创建 LTR 策略。 以下示例设置 12 周的长期保留策略进行每周备份。
az sql db ltr-policy set \
--resource-group mygroup \
--server myserver \
--name mydb \
--weekly-retention "P12W"
此示例设置 12 周的保留策略进行每周备份,设置 5 年的保留策略进行每年备份,并在 4 月 15 日所在的那一周进行每年 LTR 备份。
az sql db ltr-policy set \
--resource-group mygroup \
--server myserver \
--name mydb \
--weekly-retention "P12W" \
--yearly-retention "P5Y" \
--week-of-year 16
# get the SQL server
$subId = "<subscriptionId>"
$serverName = "<serverName>"
$resourceGroup = "<resourceGroupName>"
$dbName = "<databaseName>"
Connect-AzAccount
Select-AzSubscription -SubscriptionId $subId
$server = Get-AzSqlServer -ServerName $serverName -ResourceGroupName $resourceGroup
# create LTR policy with WeeklyRetention = 12 weeks. MonthlyRetention and YearlyRetention = 0 by default.
Set-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup -WeeklyRetention P12W
# create LTR policy with WeeklyRetention = 12 weeks, YearlyRetention = 5 years and WeekOfYear = 16 (week of April 15). MonthlyRetention = 0 by default.
Set-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup -WeeklyRetention P12W -YearlyRetention P5Y -WeekOfYear 16
查看备份并从备份进行还原
查看通过 LTR 策略为特定数据库保留的备份,并从这些备份进行还原。
注意
如果已删除逻辑服务器,请使用 Azure CLI 或 PowerShell 命令查看和还原 LTR 备份。
在 Azure 门户中,导航到服务器,然后选择“备份”。 若要查看特定数据库的可用 LTR 备份,请在“可用 LTR 备份”列下选择“管理”。 将显示一个窗格,其中包含所选数据库的可用 LTR 备份列表。
在显示的可用 LTR 备份窗格中,查看可用备份。 选择要还原的备份。
若要从可用 LTR 备份进行还原,请选择要从中进行还原的备份,然后选择“还原”。
选择新数据库的名称,然后选择“查看 + 创建”以查看还原的详细信息。 选择“创建”以从所选备份还原数据库。
在工具栏上,选择通知图标可查看还原作业的状态。
完成还原作业后,打开“SQL 数据库”页面以查看新还原的数据库。
查看 LTR 策略
运行 az sql db ltr-policy show 命令,以查看服务器上单一数据库的 LTR 策略。
az sql db ltr-policy show \
--resource-group mygroup \
--server myserver \
--name mydb
查看 LTR 备份
使用 az sql db ltr-backup list 命令列出数据库的 LTR 备份。 可以使用此命令查找在其他命令中使用的 name
参数。
az sql db ltr-backup list \
--location eastus2 \
--server myserver \
--database mydb
从 LTR 备份进行还原
运行 az sql db ltr-backup restore 命令,从 LTR 备份还原数据库。 可以运行 az sql db ltr-backup show 来获取 backup-id
。
使用命令“az sql db ltr-backup show”为 backup-id
创建变量供将来使用。
get_backup_id=$(az sql db ltr-backup show
--location eastus2 \
--server myserver \
--database mydb \
--name "3214b3fb-fba9-43e7-96a3-09e35ffcb336;132292152080000000" \
--query 'id' \
--output tsv)
从 LTR 备份还原数据库。
az sql db ltr-backup restore \
--dest-database targetdb \
--dest-server myserver \
--dest-resource-group mygroup \
--backup-id $get_backup_id
重要
若要在删除服务器或资源组后从 LTR 备份进行还原,必须具有服务器订阅范围内的权限,并且该订阅必须处于活动状态。 还必须省略可选的 -ResourceGroupName 参数。
注意
在此处,可以使用 SQL Server Management Studio 连接到已还原的数据库,以执行所需的任务,例如数据库交换。 请参阅时间点还原。
查看 LTR 策略
此示例演示如何列出服务器中的 LTR 策略。
# get all LTR policies within a server
$ltrPolicies = Get-AzSqlDatabase -ResourceGroupName $resourceGroup -ServerName $serverName | `
Get-AzSqlDatabaseLongTermRetentionPolicy
# get the LTR policy of a specific database
$ltrPolicies = Get-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup
清除 LTR 策略
此示例演示如何从数据库中清除 LTR 策略。
Set-AzSqlDatabaseBackupLongTermRetentionPolicy -ServerName $serverName -DatabaseName $dbName `
-ResourceGroupName $resourceGroup -RemovePolicy
查看 LTR 备份
此示例展示了如何列出服务器内的 LTR 备份。
# get the list of all LTR backups in a specific Azure region
# backups are grouped by the logical database id, within each group they are ordered by the timestamp, the earliest backup first
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location
# get the list of LTR backups from the Azure region under the named server
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -ServerName $serverName
# get the LTR backups for a specific database from the Azure region under the named server
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -ServerName $serverName -DatabaseName $dbName
# list LTR backups only from live databases (you have option to choose All/Live/Deleted)
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -DatabaseState Live
# only list the latest LTR backup for each database
$ltrBackups = Get-AzSqlDatabaseLongTermRetentionBackup -Location $server.Location -ServerName $serverName -OnlyLatestPerDatabase
从 LTR 备份进行还原
此示例展示了如何从 LTR 备份进行还原。 请注意,此接口没有更改,但是资源 ID 参数现在要求提供 LTR 备份资源 ID。
# restore a specific LTR backup as an P1 database on the server $serverName of the resource group $resourceGroup
Restore-AzSqlDatabase -FromLongTermRetentionBackup -ResourceId $ltrBackup.ResourceId -ServerName $serverName -ResourceGroupName $resourceGroup `
-TargetDatabaseName $dbName -ServiceObjectiveName P1
重要
- 若要在删除服务器或资源组后从 LTR 备份进行还原,必须具有服务器订阅范围内的权限,并且该订阅必须处于活动状态。 此外,还必须省略可选的
-ResourceGroupName
参数。
- 如果使用 LTR 备份来满足合规性或其他任务关键型要求,请考虑进行定期恢复演练,以验证是否可以还原 LTR 备份,以及还原结果是否符合预期的数据库状态。
注意
从此处,可使用 SQL Server Management Studio 连接到已还原的数据库,执行所需任务,例如从恢复的数据库中提取一部分数据,复制到现有数据库或删除现有数据库,并将已还原的数据库重命名为现有数据库名。 请参阅时间点还原。
删除 LTR 备份
删除使用 LTR 策略为特定数据库保留的备份。
重要
删除 LTR 备份操作是不可逆的。 若要在删除服务器后删除 LTR 备份,必须具有“订阅”范围权限。 可以通过筛选“删除长期保留备份”操作,在 Azure Monitor 中设置有关每次删除的通知。 活动日志包含有关发出请求的人员和时间的信息。 有关详细说明,请参阅创建活动日志警报。
- 在 Azure 门户中,导航到 Azure SQL 数据库的逻辑服务器。
- 选择“备份”。 若要查看特定数据库的可用 LTR 备份,请在“可用 LTR 备份”列下选择“管理”。 将显示一个窗格,其中包含所选数据库的可用 LTR 备份列表。
- 在显示的可用 LTR 备份窗格中,查看可用备份。 选择要删除的备份。 选择“删除”。
此示例展示了如何从备份列表中删除 LTR 备份。
- 使用查看 LTR 备份标识备份。
- 使用
Remove-AzSqlDatabaseLongTermRetentionBackup
删除备份。
# remove the earliest backup
$ltrBackup = $ltrBackups[0]
Remove-AzSqlDatabaseLongTermRetentionBackup -ResourceId $ltrBackup.ResourceId
最佳实践
如果使用 LTR 备份来满足合规性或其他任务关键型要求:
- 请使用门户、Azure CLI 或 PowerShell,按照查看备份部分中概述的步骤,验证 LTR 备份是否按照配置的策略进行。
- 请考虑执行定期恢复演练,以验证 LTR 备份的还原是否导致预期的数据库状态。
相关内容