快速入门:使用 Azure PowerShell 为 Azure Database for PostgreSQL 灵活服务器创建备份策略

本快速入门介绍如何通过 Azure PowerShell 创建备份策略,以保护 Azure Database for PostgreSQL Flexible Server。

Azure Database for PostgreSQL - 灵活服务器的 Azure 备份策略可定义备份创建方式和时间、恢复点的保留期以及数据保护和恢复规则。 Azure 备份 允许使用多个客户端(例如 Azure 门户PowerShellCLIAzure 资源管理器BicepTerraform 等)备份 Azure PostgreSQL 灵活服务器。

先决条件

在为 Azure Database for PostgreSQL 灵活服务器创建备份策略之前,请确保满足以下先决条件:

创建备份策略

若要为 PostgreSQL 灵活服务器创建备份策略,请执行以下步骤:

  1. 了解 PostgreSQL - 灵活服务器备份策略
  2. 检索策略模板
  3. 修改策略模板
  4. 创建策略

了解 PostgreSQL - 灵活服务器备份策略

磁盘备份每天提供多个备份,Blob 备份是连续备份,不会触发任何触发器。 现在,让我们了解 PostgreSQL 灵活服务器的备份策略对象。

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (此方案中的完整数据库备份)
        • 初始数据存储(备份的初始位置)
        • 触发器(如何触发备份)
          • 基于计划
          • 默认标记条件(所有计划备份的默认“标记”。此标记将备份链接到保留规则)
    • 默认保留规则(该规则默认应用于初始数据存储上的所有备份)

因此,此对象定义:

  • 触发的备份类型
  • 触发策略的方式(通过计划)
  • 实施到备份策略的标记
  • 数据存储的位置(如存储库)
  • 数据存储中备份数据的生命周期

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 灵活服务器配置备份