使用 Azure PowerShell 备份 Azure Database for PostgreSQL 灵活的服务器

本文介绍如何使用 Azure PowerShell 备份 Azure Database for PostgreSQL 灵活服务器。

详细了解 Azure Database for PostgreSQL 灵活服务器备份支持的方案和限制

创建备份保管库

备份保管库是 Azure 中的存储实体。 它存储 Azure 备份支持的新工作负荷的备份数据。 例如,Azure Database for PostgreSQL - 灵活服务器、存储帐户中的 Blob 和 Azure 磁盘。 备份保管库帮助组织备份数据,并最大限度降低管理开销。 备份保管库基于 Azure 的 Azure 资源管理器型号,提供增强的功能来帮助保护备份数据。

在创建备份保管库之前,请选择保管库数据的存储冗余。 然后继续利用指定的存储冗余和位置创建备份保管库。

在本文中,我们在资源组 TestBkpVault 下的区域 chinanorth 创建备份保管库 testBkpVaultRG。 使用 New-AzDataProtectionBackupVault cmdlet 创建备份保管库。 详细了解创建备份保管库的过程

$storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant/GeoRedundant -DataStoreType VaultStore
New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location chinanorth2 -StorageSetting $storageSetting
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
$TestBKPVault | fl
ETag                :
Id                  : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault
Identity            : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppIdentityDetails
IdentityPrincipalId :
IdentityTenantId    :
IdentityType        :
Location            : chinanorth2
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 Database for PostgreSQL 灵活服务器:

  • 提取要保护的 PostgreSQL 灵活服务器的 ARM ID
  • 授予对备份保管库的访问权限
  • 准备备份配置请求

提取要保护的 PostgreSQL 灵活服务器的 ARM ID

提取要保护的 PostgreSQL 灵活服务器的 Azure 资源管理器 ID (ARM ID)。 此 ID 充当数据库的标识符。 我们使用 PostgreSQL 灵活服务器 empdb11 下名为 testposgresql 的数据库示例,该数据库存在于资源组 ossrg 不同的订阅下。

$ossId = "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/flexibleServers/archive-postgresql-ccy/databases/empdb11"

授予对备份保管库的访问权限

备份保管库必须连接到 PostgreSQL 灵活服务器,然后通过密钥保管库中存在的密钥访问数据库。 因此,它需要访问 PostgreSQL 灵活服务器和密钥保管库。 向备份保管库的 托管服务标识(MSI)授予所需的访问权限。

检查将密钥存储到数据库的 PostgreSQL 灵活服务器和 Azure Key Vault 上备份保管库的托管服务标识(MSI)所需的权限

准备备份配置请求

设置所有相关权限后,通过运行以下 cmdlet 配置备份:

  1. 使用相关保管库、策略、PostgreSQL 灵活服务器(使用 Initialize-AzDataProtectionBackupInstance cmdlet)准备相关请求。

    $instance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDatabaseForPGFlexServer -DatasourceLocation $TestBkpvault.Location -PolicyId $polOss[0].Id -DatasourceId $ossId -SecretStoreURI $keyURI -SecretStoreType AzureKeyVault
    ConvertTo-Json -InputObject $instance -Depth 4 
    
  2. 提交请求,以使用 New-AzDataProtectionBackupInstance cmdlet 保护数据库服务器。

    New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $instance
    
    Name                        Type                                         BackupInstanceName
    ----                        ----                                          ------------------
    ossrg-empdb11       Microsoft.DataProtection/backupVaults/backupInstances ossrg-empdb11
    
    

运行按需备份

使用 Get-AzDataProtectionBackupInstance cmdlet 提取需要触发备份的相关备份实例。

$instance = Get-AzDataProtectionBackupInstance -SubscriptionId "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"

触发备份时指定保留规则。 要查看策略中的保留规则,请导航到策略对象以获取保留规则。 在以下示例中,将显示名称 为默认值 的规则。 让我们使用该规则来进行按需备份。

$ossPol.PolicyRule | fl

BackupParameter           : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType       : DataStoreInfoBase
DataStoreType             : OperationalStore
Name                      : BackupHourly
ObjectType                : AzureBackupRule
Trigger                   : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext
TriggerObjectType         : ScheduleBasedTriggerContext

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

若要触发按需备份,请使用 Backup-AzDataProtectionBackupInstanceAdhoc cmdlet。

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"

跟踪作业

使用 Get-AzDataProtectionJob cmdlet 跟踪所有作业。 你可以列出所有作业并提取特定作业详细信息。

还可使用 Az.ResourceGraph cmdlet 跨所有备份保管库跟踪所有作业。 使用 Search-AzDataProtectionJobInAzGraph cmdlet 提取跨备份保管库的相关作业。

  $job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDatabaseForPGFlexServer -Operation OnDemandBackup

后续步骤