本快速入门介绍如何通过 Azure PowerShell 创建备份策略,以保护 Azure Database for PostgreSQL Flexible Server。
Azure Database for PostgreSQL - 灵活服务器的 Azure 备份策略可定义备份创建方式和时间、恢复点的保留期以及数据保护和恢复规则。 Azure 备份 允许使用多个客户端(例如 Azure 门户、 PowerShell、 CLI、 Azure 资源管理器、 Bicep、 Terraform 等)备份 Azure PostgreSQL 灵活服务器。
在为 Azure Database for PostgreSQL 灵活服务器创建备份策略之前,请确保满足以下先决条件:
- 查看备份 Azure Database for PostgreSQL - 灵活服务器支持的场景和限制。
- 创建备份保管库 以存储数据库的恢复点。
若要为 PostgreSQL 灵活服务器创建备份策略,请执行以下步骤:
- 了解 PostgreSQL - 灵活服务器备份策略
- 检索策略模板
- 修改策略模板
- 创建策略
磁盘备份每天提供多个备份,Blob 备份是连续备份,不会触发任何触发器。 现在,让我们了解 PostgreSQL 灵活服务器的备份策略对象。
- PolicyRule
- BackupRule
- BackupParameter
- BackupType (此方案中的完整数据库备份)
- 初始数据存储(备份的初始位置)
- 触发器(如何触发备份)
- 基于计划
- 默认标记条件(所有计划备份的默认“标记”。此标记将备份链接到保留规则)
- BackupParameter
- 默认保留规则(该规则默认应用于初始数据存储上的所有备份)
- BackupRule
因此,此对象定义:
- 触发的备份类型
- 触发策略的方式(通过计划)
- 实施到备份策略的标记
- 数据存储的位置(如存储库)
- 数据存储中备份数据的生命周期
PostgreSQL 灵活服务器的默认 PowerShell 对象每周触发完整备份,并传输到保管库,在那里存储 三个月。
若要了解 Azure PostgreSQL 灵活服务器数据库备份的备份策略的内部组件,请使用 Get-AzDataProtectionPolicyTemplate cmdlet 检索策略模板。 此 cmdlet 返回给定数据源类型的默认策略模板。 使用此策略模板创建新策略。
$policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureDatabaseForPGFlexServer
$policyDefn | fl
DatasourceType : {Microsoft.DBforPostgreSQL/flexibleServers/databases}
ObjectType : BackupPolicy
PolicyRule : {BackupWeekly, Default}
$policyDefn.PolicyRule | fl
BackupParameter : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType : DataStoreInfoBase
DataStoreType : VaultStore
Name : BackupWeekly
ObjectType : AzureBackupRule
Trigger : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.ScheduleBasedTriggerCo
ntext
TriggerObjectType : ScheduleBasedTriggerContext
IsDefault : True
Lifecycle : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210701.SourceLifeCycle}
Name : Default
ObjectType : AzureRetentionRule
策略模板由触发器(决定哪些触发器触发备份)和生命周期(决定何时删除、复制、移动备份)组成。 在 Azure PostgreSQL 灵活服务器数据库备份中,默认的触发方式是每周计划触发器(每 7 天备份一次),并将每个备份保留 三个月。
JSON
$policyDefn.PolicyRule[0].Trigger | fl
ObjectType : ScheduleBasedTriggerContext
ScheduleRepeatingTimeInterval : {R/2021-08-22T02:00:00+00:00/P1W}
ScheduleTimeZone : UTC
TaggingCriterion : {Default}
默认保留规则生命周期::
$policyDefn.PolicyRule[1].Lifecycle | fl
DeleteAfterDuration : P3M
DeleteAfterObjectType : AbsoluteDeleteOption
SourceDataStoreObjectType : DataStoreInfoBase
SourceDataStoreType : VaultStore
TargetDataStoreCopySetting : {}
默认策略模板每周提供一次备份。 可以将备份计划修改为每周发生多天。 若要修改计划,请使用 Edit-AzDataProtectionPolicyTriggerClientObject
cmdlet。
以下示例将每周备份修改为每周的星期日、星期三和星期五进行备份。 计划日期数组提及日期,这些日期的星期几将视为一周中的几天。 此外,请指定这些计划应每周重复一次。 因此,计划间隔为“1”,间隔类型为“每周”。
$schDates = @(
(
(Get-Date -Year 2021 -Month 08 -Day 15 -Hour 22 -Minute 0 -Second 0)
),
(
(Get-Date -Year 2021 -Month 08 -Day 18 -Hour 22 -Minute 0 -Second 0)
),
(
(Get-Date -Year 2021 -Month 08 -Day 20 -Hour 22 -Minute 0 -Second 0)
)
)
$trigger = New-AzDataProtectionPolicyTriggerScheduleClientObject -ScheduleDays $schDates -IntervalType Weekly -IntervalCount 1
Edit-AzDataProtectionPolicyTriggerClientObject -Schedule $trigger -Policy $policyDefn
默认模板具有默认保留规则下的初始数据存储的生命周期。 在此方案中,规则在 三个月后删除备份数据。
New-AzDataProtectionRetentionLifeCycleClientObject
cmdlet 用于创建新的生命周期,然后使用 Edit-AzDataProtectionPolicyRetentionRuleClientObject
cmdlet 将生命周期与新规则或现有规则相关联。
以下示例创建名为 Monthly 的新保留规则,其中每个月的第一个成功备份应在保管库中保留 6 个月。
$VaultLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore VaultStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 6
Edit-AzDataProtectionPolicyRetentionRuleClientObject -Policy $policyDefn -Name Monthly -LifeCycles $VaultLifeCycle -IsDefault $false
创建保留规则后,你必须在备份策略的“触发器”属性中创建相应的标记。 使用 New-AzDataProtectionPolicyTagCriteriaClientObject cmdlet 创建新的标记条件,并使用 Edit-AzDataProtectionPolicyTagClientObject cmdlet 更新现有标记或创建新标记。
以下示例创建一个新标记以及条件,即月份的第一个成功备份。 标记与要应用的相应保留规则同名。
本例中的标记条件应命名为“每月”。
$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -AbsoluteCriteria FirstOfMonth
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria
如果计划是每周多个备份(如示例中指定的每个星期日、星期三、星期四),并且你想要存档星期日和星期五备份,则可以使用 New-AzDataProtectionPolicyTagCriteriaClientObject
cmdlet 按如下所示更改标记条件。
$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -DaysOfWeek @("Sunday", "Friday")
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria
根据要求修改模板后,使用 New-AzDataProtectionBackupPolicy cmdlet 使用修改后的模板创建策略。
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
使用 Azure PowerShell 为 Azure Database for PostgreSQL 灵活服务器配置备份。