次の方法で共有


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

この記事では、Azure Database for PostgreSQL - フレキシブル サーバーを Azure Backup でバックアップされた Azure Database for PostgreSQL - フレキシブル サーバーに復元する方法について説明します。

この記事では、次の方法について学習します。

  • 復元して新しい PostgreSQL - フレキシブル サーバーを作成する

  • 復元操作の状態を追跡する

この例では、リソース グループ testBkpVaultRG の下にある既存のバックアップ コンテナー TestBkpVault を参照します。

$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"

PostgreSQL データベースを復元して新しく作成する

アクセス許可の設定

バックアップ コンテナーは、マネージド ID を使用して他の Azure リソースにアクセスします。 バックアップから復元するには、バックアップ コンテナーのマネージド ID に、サーバーの復元先のストレージ アカウントに対する一連のアクセス許可が必要です。

ターゲット ストレージ アカウントでコンテナーのシステム割り当てマネージド ID に関連するアクセス許可を割り当てるには、Azure PostgreSQL データベースをバックアップするために必要な一連のアクセス許可に関する記事を参照してください。

回復ポイントをファイルとしてストレージ アカウントに復元するには、バックアップ コンテナーのシステム割り当てマネージド ID がターゲット ストレージ アカウントにアクセスできる必要があります。

適切な復元ポイントのフェッチ

Get-AzDataProtectionBackupInstance コマンドを使用してすべてのインスタンスをフェッチし、該当するインスタンスを特定します。

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name

Az.Resourcegraph および Search-AzDataProtectionBackupInstanceInAzGraph コマンドを使用して、多くのコンテナーとサブスクリプション内のインスタンスにまたがる回復ポイントを検索することもできます。

$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPGFlexServer -ProtectionStatus ProtectionConfigured

検索条件をフィルター処理するには、次に示すように PowerShell クライアント検索機能を使用します。

Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPGFlexServer -ProtectionStatus ProtectionConfigured | Where-Object { $_.BackupInstanceName -match "testpgflex"}

インスタンスが特定されたら、関連する復元ポイントをフェッチします。

$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName

復元要求を準備する

PostgreSQL – フレキシブル サーバー データベースの復旧ポイントは、ファイルとしてのみ復元できます。

ファイルとして復元

で詳しく説明したように、アクセス許可が割り当てられたストレージ アカウント内のコンテナーの URI をフェッチします。 たとえば、異なるサブスクリプションを持つストレージ アカウント testossstorageaccount の下で、コンテナーに testcontainerrestore という名前を付けられます。

$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"

関連するすべての詳細を含む復元要求を準備するには、Initialize-AzDataProtectionRestoreRequest コマンドを使用します。

$OssRestoreAsFilesReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPGFlexServer -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "testpgflex-westus_1628853549768" 

復元のトリガー

前に準備した要求で復元をトリガーするには、Start-AzDataProtectionBackupInstanceRestore コマンドを使用します。

Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName $AllInstances[2].BackupInstanceName -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Parameter $OssRestoreReq

ジョブの追跡

Get-AzDataProtectionJob コマンドを使用して、すべてのジョブを追跡します。 すべてのジョブを一覧表示し、特定のジョブの詳細を取得できます。

Az.ResourceGraph を使用して、すべての Backup コンテナーを対象に、全ジョブを追跡することもできます。 関連するジョブを取得し、バックアップ コンテナー全体にまたがる場合にも、Search-AzDataProtectionJobInAzGraph コマンドを使用します。

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

復元されたストレージ アカウントから PostgreSQL - フレキシブル サーバーを作成する

ターゲットのストレージ アカウントへの復元が完了した後、pg_restore ユーティリティを使って、ターゲットから Azure Database for PostgreSQL – フレキシブル サーバー データベースを復元できます。 既存の PostgreSQL – フレキシブル サーバーと既存のデータベースに接続するには、次のコマンドを使います。

pg_restore -h <hostname> -U <username> -d <db name> -Fd -j <NUM> -C <dump directory>

-Fd: ディレクトリ形式。 -j: ジョブの数。 -C: データベース自体を作成して、それに再接続するコマンドで出力を始めます。

この構文の例を次に示します。

pg_restore -h <hostname> -U <username> -j <Num of parallel jobs> -Fd -C -d <databasename> sampledb_dir_format

復元するデータベースが複数ある場合は、データベースごとに前のコマンドを再実行します。

また、複数の同時実行ジョブ -j を使うと、複数の仮想コアを持つターゲット サーバーに大きなデータベースを復元する時間を短縮できます。 ジョブの数は、ターゲット サーバーに割り当てられた vCPU の数以下にすることができます。

次のステップ