次の方法で共有


Azure PowerShell を使用して Azure Database for PostgreSQL - フレキシブル サーバーをバックアップする (プレビュー)

この記事では、Azure PowerShell を使用して Azure PostgreSQL データベースをバックアップする方法について説明します。

この記事では、次のことについて説明します。

  • バックアップ コンテナーの作成

  • バックアップ ポリシーの作成

  • Azure Database for PostgreSQL - フレキシブル サーバーのバックアップを構成する

  • オンデマンド バックアップ ジョブを実行する

Azure Database for PostgreSQL - フレキシブル サーバーでサポートされるシナリオと制限事項については、サポート マトリックスに関する記事を参照してください。

バックアップ コンテナーの作成

バックアップ コンテナーは、Azure のストレージ エンティティです。 これにより、Azure Backup でサポートされる新しいワークロードのバックアップ データが保存されます。 たとえば、Azure Database for PostgreSQL - フレキシブル サーバー、ストレージ アカウント内の BLOB、Azure ディスクなどです。 バックアップ コンテナーを使用すると、管理オーバーヘッドを最小限に抑えながら、バックアップ データを簡単に整理できます。 バックアップ コンテナーは、Azure の Azure Resource Manager モデルに基づいており、強化されたバックアップ データの保護機能を提供します。

バックアップ コンテナーを作成する前に、コンテナー内のデータのストレージ冗長を選択します。 次に、そのストレージ冗長と場所を使用したバックアップ コンテナーの作成に進みます。

この記事では、バックアップ コンテナー TestBkpVaultwestus リージョンのリソース グループ testBkpVaultRG に作成します。 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 - フレキシブル サーバーの既定のオブジェクトでは、完全バックアップが "毎週" トリガーされ、コンテナーに保存され、3 か月間格納されるようになっています。

ポリシー テンプレートの取得

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 - フレキシブル サーバー データベース バックアップでは、トリガーの既定値はスケジュールされた週単位のトリガー (7 日に 1 回のバックアップ) であり、各バックアップは 3 か月間保持されます。

 $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 : {}

ポリシー テンプレートを変更する

スケジュールを変更する

既定のポリシー テンプレートでは、バックアップは週に 1 回行われます。 このスケジュールは、バックアップを週に複数日行うように変更することができます。 スケジュールを変更するには、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   

新しい保有規則を追加する

既定のテンプレートには、既定の保持規則のもと、初期データストアのライフサイクルが設定されています。 このシナリオでは、3 か月後にバックアップ データを削除する規則となっています。 New-AzDataProtectionRetentionLifeCycleClientObject コマンドを使用して新しいライフサイクルを作成した後、Edit-AzDataProtectionPolicyRetentionRuleClientObject コマンドを使用して、それらを新しい規則または既存の規則に関連付けます。

次の例では、毎月最初に成功したバックアップを 6 か月間コンテナーに保持する、Monthly という名前の新しい保持規則を作成します。

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

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

タグと関連条件を追加する

保持規則を作成したら、バックアップ ポリシーの Trigger プロパティに、対応する "タグ" を作成する必要があります。 New-AzDataProtectionPolicyTagCriteriaClientObject コマンドを使用して新しいタグ付け条件を作成し、Edit-AzDataProtectionPolicyTagClientObject コマンドを使用して既存のタグを更新するか、新しいタグを作成します。

次の例では、適用予定の対応する保持規則と同じ名前の基準 (月の最初に成功したバックアップ) とともに、新しい "タグ" を作成します。

この例の場合、タグ付けの条件の名前は Monthly である必要があります。

$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 -フレキシブル サーバー バックアップ ポリシーを作成する

要件に従ってテンプレートを変更したら、New-AzDataProtectionBackupPolicy コマンドを使用して、変更したテンプレートを使用してポリシーを作成します。

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

バックアップの構成

コンテナーとポリシーを作成したら、Azure PostgreSQL データベースを保護するために考慮する必要がある重要なポイントが 3 つあります。

関連する主なエンティティ

保護される PostgreSQL - フレキシブル サーバー

保護される PostgreSQL - フレキシブル サーバーの Azure Resource Manager ID をフェッチします。 この ID は、データベース サーバーの識別子として機能します。 ここでは、別のサブスクリプションのリソース グループ ossrg に存在する PostgreSQL - フレキシブル サーバー testpgflex の例を使用します。

$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

オンデマンド バックアップを実行する

バックアップをトリガーする必要がある関連するバックアップ インスタンスを、Get-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

次のステップ