共用方式為


備份 適用於 PostgreSQL 的 Azure 資料庫 - 使用 Azure PowerShell 的彈性伺服器 (預覽)

本文說明如何使用 Azure PowerShell 備份 Azure PostgreSQL 資料庫

在本文中,您將學會如何:

  • 建立備份保存庫

  • 建立備份原則

  • 設定 適用於 PostgreSQL 的 Azure 資料庫的備份 - 彈性伺服器

  • 執行隨選備份作業

如需 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器支援案例和限制的資訊,請參閱支援矩陣

建立備份保存庫

備份保存庫是 Azure 中的儲存體實體。 這會儲存 Azure 備份所支援的新工作負載備份資料。 例如,適用於 PostgreSQL 的 Azure 資料庫 – 彈性伺服器、記憶體帳戶中的 Blob 和 Azure 磁碟。 保存可協助您組織備份資料,同時減輕管理負擔。 備份保存庫是以 Azure 的 Azure Resource Manager 模型為基礎,可提供增強功能來協助保護備份資料。

在您建立備份保存庫之前,請在保存庫中選擇資料的儲存體備援。 然後,繼續使用該儲存體備援和位置來建立備份保存庫。

在本文中,我們會在資源群組 testBkpVaultRG 下,於 westus 區域中建立備份保存庫 TestBkpVault。 使用 New-AzDataProtectionBackupVault 命令來建立備份保存庫。 深入了解如何建立備份保存庫

$storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant/GeoRedundant -DataStoreType VaultStore
New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
$TestBKPVault | fl
ETag                :
Id                  : /subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault
Identity            : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppIdentityDetails
IdentityPrincipalId :
IdentityTenantId    :
IdentityType        :
Location            : westus
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 PostgreSQL – 彈性伺服器資料庫。

建立備份原則

瞭解 PostgreSQL – 彈性伺服器備份原則

讓我們瞭解 PostgreSQL – 彈性伺服器的備份原則物件。

  • PolicyRule
    • BackupRule
      • BackupParameter
        • BackupType (在此情況下為完整伺服器備份)
        • 初始資料存放區(備份最初落到何處)
        • 觸發程序 (觸發備份的方式)
          • 依據排程
          • 預設標記準則 (所有已排程備份的預設「標籤」。此標籤會將備份連結至保留規則)
    • 預設保留規則 (預設會套用至初始資料存放區上所有備份的規則)

因此,此物件會定義要觸發的備份類型、觸發備份的方式 (透過排程)、備份所標記的物件、備份存放的位置 (資料存放區),以及資料存放區中備份資料的生命週期。 PostgreSQL - 彈性伺服器的默認物件會指出每周觸發完整備份,並到達保存庫,並儲存了三個月。

擷取原則範本

若要瞭解 Azure PostgreSQL – 彈性伺服器資料庫備份的備份原則內部元件,請使用 Get-AzDataProtectionPolicyTemplate 命令擷取原則範本。 此命令會傳回指定資料來源類型的預設原則範本。 使用此原則範本來建立新的原則。

$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 – 彈性伺服器資料庫備份中,觸發程式的預設值是排程的每周觸發程式(每七天一次備份),並保留每個備份三個月。

 $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 命令。

下列範例會修改每週備份,在每週的每個星期日、星期三和星期五進行備份。 排程日期陣列會提及日期,一週的星期幾即會視這些日期為星期幾而定。 也需將這些排程指定為每週重複一次。 因此,排程間隔為 「1」 而間隔類型為 「Weekly」。

$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   

新增保留規則

默認範本具有預設保留規則下初始數據存放區的生命週期。 在此案例中,規則表示會在三個月後刪除備份資料。 使用 AzDataProtectionRetentionLifeCycleClientObject 命令建立新的生命週期,並使用 AzDataProtectionPolicyRetentionRuleClientObject 命令將新的生命週期與新規則或現有規則產生關聯。

下列範例會建立名為 Monthly 的新保留規則,其中每個月的第一個成功備份應該保留在保存庫中六個月。

$VaultLifeCycle = New-AzDataProtectionRetentionLifeCycleClientObject -SourceDataStore VaultStore -SourceRetentionDurationType Months -SourceRetentionDurationCount 6

Edit-AzDataProtectionPolicyRetentionRuleClientObject -Policy $policyDefn -Name Monthly -LifeCycles $VaultLifeCycle -IsDefault $false

新增標記和相關準則

建立保留規則後,您便可在備份原則的「觸發程序」屬性中,建立對應的「標記」。 使用 AzDataProtectionPolicyTagCriteriaClientObject 命令來建立新的標記準則,並使用 AzDataProtectionPolicyTagClientObject 命令來更新現有標記或建立新標記。

下列範例會建立新「標記」以及準則 (這是當月的第一次成功備份),名稱與要套用的對應保留規則相同。

在此範例中,標記準則應命名為「每月」

$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -AbsoluteCriteria FirstOfMonth
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria

如果排程是每周多個備份(如範例中指定的每個星期日、星期三、星期四),而且您想要封存星期日和星期五備份,則可以變更標記準則,如下所示:

$tagCriteria = New-AzDataProtectionPolicyTagCriteriaClientObject -DaysOfWeek @("Sunday", "Friday")
Edit-AzDataProtectionPolicyTagClientObject -Policy $policyDefn -Name Monthly -Criteria $tagCriteria

建立新的 PostgreSQL - 彈性伺服器備份原則

依據需求修改範本之後,請使用 AzDataProtectionBackupPolicy 命令來建立使用已修改範本的原則。

$polOss = New-AzDataProtectionBackupPolicy -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Name "TestOSSPolicy" -Policy $policyDefn

設定備份

建立保存庫和原則之後,您必須考慮三個重點,以保護 Azure PostgreSQL 資料庫。

主要相關實體

PostgreSQL - 要保護的彈性伺服器

擷取 PostgreSQL 的 Azure Resource Manager 識別符 (Azure Resource Manager 標識符) - 要保護的彈性伺服器。 此標識碼可作為資料庫伺服器的識別碼。 我們使用 PostgreSQL - 彈性伺服器 testpgflex 的範例,其存在於不同訂用帳戶下的資源群組 ossrg 中。

$ossId = "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/flexibleServers/testpgflex

#### Backup vault

You need to connect the Backup vault to the PostgreSQL - flexbile server. Access is granted to the Backup vault's MSI.

See the [permissions] (/backup-azure-database-postgresql-flex-overview.md#permissions-for-backup) you should grant to the Managed System Identity (MSI) of the Backup Vault on the PostgreSQL - flexible server.

### Prepare the request

Once all the relevant permissions are set, the configuration of the backup is performed in two steps.

1. We prepare the relevant request by using the relevant vault, policy, PostgreSQL - flexible server using the [Initialize-AzDataProtectionBackupInstance](/powershell/module/az.dataprotection/initialize-azdataprotectionbackupinstance) command.
1. We submit the request to protect the database server using the [New-AzDataProtectionBackupInstance](/powershell/module/az.dataprotection/new-azdataprotectionbackupinstance) command.

```azurepowershell
$instance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDatabaseForPostgreSQLFlexibleServer -DatasourceLocation $TestBkpvault.Location -PolicyId $polOss[0].Id -DatasourceId $ossId ConvertTo-Json -InputObject $instance -Depth 4 

New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $instance

Name                        Type                                         BackupInstanceName
----                        ----                                          ------------------
ossrg-testpgflex       Microsoft.DataProtection/backupVaults/backupInstances ossrg-testpgflex

執行隨選備份

使用 AzDataProtectionBackupInstance 命令,擷取您需要觸發備份的相關備份執行個體。

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

您可以在觸發備份時指定保留規則。 若要查看原則中的保留規則,請瀏覽原則物件中的保留規則。 下列範例會顯示名稱為 default 的規則。 我們會針對隨選備份使用該規則。

$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 命令。

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

追蹤作業

使用 Get-AzDataProtectionJob 命令追蹤所有作業。 您可以列出所有工作,並擷取特定的工作詳細資料。

您也可以使用 Az.ResourceGraph 追蹤所有備份保存庫的所有作業。 使用 Search-AzDataProtectionJobInAzGraph 命令取得跨任何備份保存庫的相關作業。

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

下一步