本文介绍如何使用 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 配置备份:
使用相关保管库、策略、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
提交请求,以使用
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