使用 Azure 恢复服务保管库配置 Azure SQL 数据库长期备份保留和从其中进行还原

可配置 Azure 恢复服务保管库来存储 Azure SQL 数据库备份,并通过 Azure 门户或 PowerShell 使用保管库中保留的备份恢复数据库。

Azure 门户

以下章节介绍如何使用 Azure 门户配置 Azure 恢复服务保管库、查看保管库中的备份和从保管库进行恢复。

配置保管库、注册服务器,并选择数据库

可配置 Azure 恢复服务保管库以保留自动备份,使其保留期长于服务层的保留期。

  1. 打开服务器的“SQL 服务器”页面。

    SQL 服务器页面

  2. 单击“长期备份保留”。

    长期备份保留链接

  3. 在服务器的“长期备份保留”页面上,查看并接受预览条款(除非已执行此操作或此功能已不处于预览中)。

    接受预览版条款

  4. 要配置长期备份保留,请在网格中选择该数据库,并在工具栏上单击“配置”。

    选择要长期备份保留的数据库

  5. 在“配置”页面上,单击“恢复服务保管库”下的“配置所需设置”。

    配置保管库链接

  6. 在“恢复服务保管库”页面上,选择现有保管库(如果有)。 如果找不到订阅的恢复服务保管库,则单击以退出此流程并创建恢复服务保管库。

    创建保管库链接

  7. 在“恢复服务保管库”页面上,单击“添加”。

    添加保管库链接

  8. 在“恢复服务保管库”页面上,为恢复服务保管库提供有效的名称。

    新保管库名称

  9. 选择订阅和资源组,并选择保管库的位置。 完成后,单击“创建”。

    创建保管库

    Important

    保管库必须与 Azure SQL 逻辑服务器位于同一区域,必须使用与逻辑服务器相同的资源组。

  10. 创建新保管库后,执行必要的步骤以返回到“恢复服务保管库”页面。

  11. 在“恢复服务保管库”页面上,单击保管库,并单击“选择”。

    选择现有保管库

  12. 在“配置”页面上,为新保留策略提供有效的名称,根据需要修改默认保留策略,并单击“确定”。

    定义保留策略

    Note

    保留策略名称不允许使用某些字符,包括空格。

  13. 在数据库的“长期备份保留”页面上,单击“保存”,然后单击“确定”,将长期备份保留策略应用于所选数据库。

    定义保留策略

  14. 单击“保存”以使用此新策略对你配置的 Azure 恢复服务保管库启用长期备份保留。

    定义保留策略

Important

配置后,备份会在随后七天内出现在保管库中。 如果备份尚未显示在保管库中,请勿继续本教程。

使用 Azure 门户查看长期保留的备份

长期备份保留中查看有关数据库备份的信息。

  1. 在 Azure 门户中,打开数据库备份的 Azure 恢复服务保管库(转到“所有资源”并从订阅的资源列表中选择它)以查看数据库备份在保管库中使用的存储量。

    查看包含备份的恢复服务保管库

  2. 打开数据库的“SQL 数据库”页面。

    新示例 db 页面

  3. 在工具栏上,单击“还原” 。

    还原工具栏

  4. 在“还原”页面上,单击“长期”。

  5. 在“Azure 保管库备份”下单击“选择备份” ,查看长期备份保留中提供的数据库备份。

    保管库中的备份

使用 Azure 门户从长期备份保留中的备份还原数据库

从 Azure 恢复服务保管库中的备份将数据库还原到新数据库。

  1. 在“Azure 保管库备份”页面上,单击要还原的备份,并单击“选择”。

    选择保管库中的备份

  2. 在“数据库名称” 文本框中,提供还原后数据库的名称。

    新数据库名称

  3. 单击“确定”将数据库从保管库中的备份还原到新数据库。

  4. 在工具栏上,单击通知图标可查看还原作业的状态。

    从保管库还原作业进度

  5. 完成还原作业后,打开“SQL 数据库”页面以查看新还原的数据库。

    从保管库还原的数据库

Note

从此处,可使用 SQL Server Management Studio 连接到已还原的数据库,以执行所需任务,例如从恢复的数据库中提取一部分数据,复制到现有数据库或删除现有数据库,并将已还原数据库的名称重命名为现有数据库名称

PowerShell

以下章节介绍如何使用 PowerShell 配置 Azure 恢复服务保管库、查看保管库中的备份和从保管库进行还原。

创建恢复服务保管库

使用 New-AzureRmRecoveryServicesVault 创建恢复服务保管库。

Important

保管库必须位于与 Azure SQL 逻辑服务器相同的区域,并且必须使用与逻辑服务器相同的资源组。

# Create a recovery services vault

#$resourceGroupName = "{resource-group-name}"
#$serverName = "{server-name}"
$serverLocation = (Get-AzureRmSqlServer -ServerName $serverName -ResourceGroupName $resourceGroupName).Location
$recoveryServiceVaultName = "{new-vault-name}"

$vault = New-AzureRmRecoveryServicesVault -Name $recoveryServiceVaultName -ResourceGroupName $ResourceGroupName -Location $serverLocation 
Set-AzureRmRecoveryServicesBackupProperties -BackupStorageRedundancy LocallyRedundant -Vault $vault

将服务器设置为使用其长期保留备份的恢复保管库

使用 Set-AzureRmSqlServerBackupLongTermRetentionVault cmdlet 将先前创建的恢复服务保管库与特定 Azure SQL 服务器关联。

# Set your server to use the vault to for long-term backup retention 

Set-AzureRmSqlServerBackupLongTermRetentionVault -ResourceGroupName $resourceGroupName -ServerName $serverName -ResourceId $vault.Id

创建保留策略

保留策略用于设置数据库备份的保留时间。 使用 Get-AzureRmRecoveryServicesBackupRetentionPolicyObject cmdlet 获取默认保留策略,以用作策略创建的模板。 此模板中,保留期设置为 2 年。 接下来,运行 New-AzureRmRecoveryServicesBackupProtectionPolicy 来最终创建策略。

Note

某些 cmdlet 要求在运行 (Set-AzureRmRecoveryServicesVaultContext) 之前设置保管库上下文,因此会在多个相关的代码片段中看到此 cmdlet。 设置上下文是因为策略是保管库的一部分。 可以为每个保管库创建多个保留策略,并将所需策略应用到特定数据库。

# Retrieve the default retention policy for the AzureSQLDatabase workload type
$retentionPolicy = Get-AzureRmRecoveryServicesBackupRetentionPolicyObject -WorkloadType AzureSQLDatabase

# Set the retention value to two years (you can set to any time between 1 week and 10 years)
$retentionPolicy.RetentionDurationType = "Years"
$retentionPolicy.RetentionCount = 2
$retentionPolicyName = "my2YearRetentionPolicy"

# Set the vault context to the vault you are creating the policy for
Set-AzureRmRecoveryServicesVaultContext -Vault $vault

# Create the new policy
$policy = New-AzureRmRecoveryServicesBackupProtectionPolicy -name $retentionPolicyName -WorkloadType AzureSQLDatabase -retentionPolicy $retentionPolicy
$policy

将数据库配置为使用前面定义的保留策略

使用 Set-AzureRmSqlDatabaseBackupLongTermRetentionPolicy cmdlet 将新策略应用到特定数据库。

# Enable long-term retention for a specific SQL database
$policyState = "enabled"
Set-AzureRmSqlDatabaseBackupLongTermRetentionPolicy -ResourceGroupName $resourceGroupName -ServerName $serverName -DatabaseName $databaseName -State $policyState -ResourceId $policy.Id

查看长期保留的备份信息和备份

长期备份保留中查看有关数据库备份的信息。

使用以下 cmdlet 查看备份信息:

#$resourceGroupName = "{resource-group-name}"
#$serverName = "{server-name}"
$databaseNeedingRestore = $databaseName

# Set the vault context to the vault we want to restore from
#$vault = Get-AzureRmRecoveryServicesVault -ResourceGroupName $resourceGroupName
Set-AzureRmRecoveryServicesVaultContext -Vault $vault

# the following commands find the container associated with the server 'myserver' under resource group 'myresourcegroup'
$container = Get-AzureRmRecoveryServicesBackupContainer -ContainerType AzureSQL -FriendlyName $vault.Name

# Get the long-term retention metadata associated with a specific database
$item = Get-AzureRmRecoveryServicesBackupItem -Container $container -WorkloadType AzureSQLDatabase -Name $databaseNeedingRestore

# Get all available backups for the previously indicated database
# Optionally, set the -StartDate and -EndDate parameters to return backups within a specific time period
$availableBackups = Get-AzureRmRecoveryServicesBackupRecoveryPoint -Item $item
$availableBackups

从长期备份保留的备份还原数据库

从长期备份保留还原使用 Restore-AzureRmSqlDatabase cmdlet。

# Restore the most recent backup: $availableBackups[0]
#$resourceGroupName = "{resource-group-name}"
#$serverName = "{server-name}"
$restoredDatabaseName = "{new-database-name}"
$edition = "Basic"
$performanceLevel = "Basic"

$restoredDb = Restore-AzureRmSqlDatabase -FromLongTermRetentionBackup -ResourceId $availableBackups[0].Id -ResourceGroupName $resourceGroupName `
 -ServerName $serverName -TargetDatabaseName $restoredDatabaseName -Edition $edition -ServiceObjectiveName $performanceLevel
$restoredDb

Note

从此处,可使用 SQL Server Management Studio 连接到已还原的数据库,执行所需任务,例如从恢复的数据库中提取一部分数据,复制到现有数据库或删除现有数据库,并将已还原的数据库重命名为现有数据库名。 请参阅时间点还原

后续步骤