다음을 통해 공유


Azure PowerShell을 사용하여 Azure Database for PostgreSQL - 유연한 서버 복원(미리 보기)

이 문서에서는 Azure Database for PostgreSQL - 유연한 서버를 Azure Database for PostgreSQL - Azure Backup에서 백업하는 유연한 서버로 복원하는 방법을 설명합니다.

이 문서에서는 다음을 수행하는 방법을 알아봅니다.

  • 복원하여 새 PostgreSQL - 유연한 서버 만들기

  • 복원 작업 상태 추적

예제에서 testBkpVaultRG 리소스 그룹 아래에 있는 기존 백업 자격 증명 모음 TestBkpVault를 참조합니다.

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

복원하여 새 PostgreSQL 데이터베이스 만들기

권한 설정

백업 자격 증명 모음은 관리 ID를 사용하여 다른 Azure 리소스에 액세스합니다. 백업에서 복원하려면 Backup 자격 증명 모음의 관리 ID에 서버가 복원될 스토리지 계정에 대한 권한 집합이 필요합니다.

대상 스토리지 계정에서 자격 증명 모음의 시스템 할당 관리 ID에 대한 관련 권한을 할당하려면 Azure PostgreSQL 데이터베이스를 백업하는 데 필요한 권한 집합을 참조하세요.

복구 지점을 스토리지 계정에 파일로 복원하려면 백업 자격 증명 모음의 시스템 할당 관리 ID에 대상 스토리지 계정에 대한 액세스 권한이 필요합니다.

관련 복구 지점 가져오기

Get-AzDataProtectionBackupInstance 명령을 사용하여 모든 인스턴스를 가져오고 관련 인스턴스를 식별합니다.

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

또한 Az.ResourcegraphSearch-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를 사용하여 모든 백업 자격 증명 모음에서 작업을 추적할 수도 있습니다. 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를 사용하면 다중 vCore 대상 서버에서 대규모 데이터베이스를 복원하는 데 걸리는 시간을 줄일 수 있습니다. 작업 수는 대상 서버에 할당된 vCPU 수와 같거나 작을 수 있습니다.

다음 단계