在使用 Azure PowerShell 的存储帐户中备份所有 Azure Blob

本文介绍如何在使用 Azure PowerShell 的存储帐户中备份所有 Azure Blob。 现在可以执行操作备份和保管备份,以使用 Azure 备份保护存储帐户中的块 blob。

有关 Azure Blob 区域可用性、支持的方案和限制,请参阅支持矩阵

重要

Az 5.9.0 版本起提供对 Azure blob 的支持

准备工作

在开始之前,请参阅先决条件支持矩阵

创建备份保管库

备份保管库是 Azure 中的一个存储实体,用于保存 Azure 备份支持的各种较新的工作负载(例如 Azure Database for PostgreSQL 服务器和 Azure Blob)的备份数据。 备份保管库便于组织备份数据,并最大限度降低管理开销。 备份保管库基于 Azure 的 Azure 资源管理器型号,提供增强功能帮助保护备份数据。

在创建备份保管库之前,请选择保管库数据的存储冗余。 然后继续使用该存储冗余和位置创建备份保管库。 在本文中,我们将在“chinanorth”区域的资源组“testBkpVaultRG”下创建备份保管库“TestBkpVault”。 使用 New-AzDataProtectionBackupVault 命令创建备份保管库。 详细了解创建备份保管库

$storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant/GeoRedundant -DataStoreType VaultStore

New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location chinanorth -StorageSetting $storageSetting
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
$TestBKPVault | fl
ETag                :
Id                  : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault
Identity            : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppIdentityDetails
IdentityPrincipalId :
IdentityTenantId    :
IdentityType        :
Location            : chinanorth
Name                : TestBkpVault
ProvisioningState   : Succeeded
StorageSetting      : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.StorageSetting}
SystemData          : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SystemData
Tag                 : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppTrackedResourceTags
Type                : Microsoft.DataProtection/backupVaults

创建保管库后,让我们创建备份策略来保护 Azure Blob。

重要

虽然会看到保管库的备份存储冗余,但冗余并不实际应用于 blob 的操作备份,因为该备份在本质上是本地的,不会有任何数据存储在备份保管库中。 此处的备份保管库是管理实体,可帮助你管理存储帐户中块 blob 的保护。

创建备份策略

选择备份层:

重要

在继续为 Azure Blob 创建策略和配置备份之前,请阅读本节

若要了解 Azure Blob 备份的备份策略之内部组件,请使用 Get-AzDataProtectionPolicyTemplate 命令来检索策略模板。 此命令返回给定数据源类型的默认策略模板。 使用此策略模板创建新策略。

$policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureBlob
$policyDefn | fl


DatasourceType : {Microsoft.Storage/storageAccounts/blobServices}
ObjectType     : BackupPolicy
PolicyRule     : {Default}

$policyDefn.PolicyRule | fl

IsDefault  : True
Lifecycle  : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202101.SourceLifeCycle}
Name       : Default
ObjectType : AzureRetentionRule

策略模板仅包含生命周期(决定删除/复制/移动备份的时间)。 由于 Blob 的操作备份在本质上是连续的,因此无需日程安排即可执行备份。

$policyDefn.PolicyRule.Lifecycle | fl


DeleteAfterDuration        : P30D
DeleteAfterObjectType      : AbsoluteDeleteOption
SourceDataStoreObjectType  : DataStoreInfoBase
SourceDataStoreType        : OperationalStore
TargetDataStoreCopySetting :

注意

对较长持续时间进行还原可能会导致还原操作需要较长时间才能完成。 此外,还原数据集所用的时间还取决于在还原期间执行的写入和删除操作的次数。 例如,如果一个帐户有 1 百万个对象,每天增加 3,000 个对象,每天删除 1,000 个对象,将需要大约两个小时才能还原到过去 30 天的点。

对于具有此变化率的帐户,不建议在过去保留时间和还原超过 90 天。

一旦策略对象具有所有所需值,请使用 New-AzDataProtectionBackupPolicy 命令从策略对象创建新策略。

New-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name blobBkpPolicy -Policy $policyDefn

Name                   Type
----                   ----
blobBkpPolicy       Microsoft.DataProtection/backupVaults/backupPolicies

$blobBkpPol = Get-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "blobBkpPolicy"

配置备份

创建保管库和策略后,用户需要考虑两个关键点来保护存储帐户中的所有 Azure Blob。

  • 关键实体
  • 权限

关键实体

  • 包含要保护的 blob 的存储帐户:提取含有要保护的 Blob 的存储帐户的 Azure 资源管理器 ID。 用作存储帐户的标识符。 我们使用名为 PSTestSA 的存储帐户作为示例,该帐户位于其他订阅中的资源组 blobrg 下

    $SAId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/blobrg/providers/Microsoft.Storage/storageAccounts/PSTestSA"
    
  • 备份保管库:备份保管库需要存储帐户的权限才能对存储帐户中的 Blob 启用备份。 保管库的系统分配托管标识用于分配此类权限。

分配权限

需要通过 Azure RBAC 向创建的保管库(以保管库 MSI 表示)和相关存储帐户分配一些权限。 可以通过门户或 PowerShell 执行上述操作。 详细了解所有相关权限

准备请求配置 blob 备份

选择备份层:

一旦设置了所有相关的权限,就可以分 2 步执行备份配置。 首先,我们使用相关保管库、策略、使用 Initialize-AzDataProtectionBackupInstance 命令的存储帐户来准备相关请求。 然后,我们提交请求以保护使用 New-AzDataProtectionBackupInstance 命令的存储帐户中的 Blob。

$instance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureBlob -DatasourceLocation $TestBkpvault.Location -PolicyId $blobBkpPol[0].Id -DatasourceId $SAId 
New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $instance

Name                                                       Type                                                  BackupInstanceName
----                                                       ----                                                  ------------------
blobrg-PSTestSA-3df6ac08-9496-4839-8fb5-8b78e594f166 Microsoft.DataProtection/backupVaults/backupInstances blobrg-PSTestSA-3df6ac08-9496-4839-8fb5-8b78e594f166

重要

为 Blob 备份配置存储帐户后,一些功能会受到影响,例如更改源和删除锁。 了解详细信息

后续步骤

使用 Azure PowerShell 还原 Azure Blob