Sdílet prostřednictvím


Obnovení databází PostgreSQL pomocí Azure PowerShellu

Tento článek popisuje, jak pomocí Azure PowerShellu obnovit databáze PostgreSQL na server Azure Database for PostgreSQL , který jste zálohovali prostřednictvím služby Azure Backup. Databázi PostgreSQL můžete obnovit také pomocí webu Azure Portal, Azure CLI a rozhraní REST API.

Vzhledem k tomu, že databáze PostgreSQL je databáze typu platforma jako služba (PaaS), možnost obnovení Original-Location (OLR) nahrazením stávající databáze (z místa, kde byly zálohy pořízeny), není podporovaná. Pokud chcete vytvořit novou databázi na stejném serveru Azure Database for PostgreSQL nebo na jiném serveru PostgreSQL, můžete provést obnovení z bodu obnovení. Tato možnost se nazývá Alternate-Location Recovery (ALR). AlR pomáhá zachovat zdrojnou i obnovenou (novou) databázi.

Příklady v tomto článku odkazují na existující trezor služby Backup s názvem TestBkpVault ve skupině testBkpVaultRGprostředků:

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

Obnovení za účelem vytvoření nové databáze PostgreSQL

Nastavení oprávnění

Trezor služby Backup používá spravovanou identitu pro přístup k dalším prostředkům Azure. K obnovení ze zálohy vyžaduje spravovaná identita trezoru služby Backup sadu oprávnění na serveru Azure Database for PostgreSQL, do kterého se má databáze obnovit.

Pokud chcete přiřadit příslušná oprávnění pro spravovanou identitu přiřazenou systémem trezoru na cílovém serveru PostgreSQL, podívejte se na sadu oprávnění potřebných k zálohování databáze PostgreSQL.

Pokud chcete obnovit bod obnovení jako soubory do úložného účtu, potřebuje spravovaná identita přiřazená systémem úložiště záloh přístup k cílovému úložnému účtu.

Získejte příslušný bod obnovení

Načtěte všechny instance pomocí Get-AzDataProtectionBackupInstance příkazu a identifikujte příslušnou instanci:

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

K vyhledávání bodů obnovení napříč instancemi v mnoha trezorech a předplatných můžete také použít Az.Resourcegraph příkaz Search-AzDataProtectionBackupInstanceInAzGraph :

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

Pokud chcete filtrovat kritéria hledání, použijte možnosti vyhledávání klienta PowerShellu:

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

Po identifikaci instance načtěte příslušný bod obnovení:

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

Pokud potřebujete načíst bod obnovení z archivní úrovně, přidejte filtr klienta:

Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName | Where-Object {$_.Property.RecoveryPointDataStoresDetail[0].Type -match "Archive" }

Připravte požadavek na obnovení

Pro databázi PostgreSQL existují různé možnosti obnovení. Bod obnovení můžete obnovit jako jinou databázi nebo obnovit jako soubory. Bod obnovení může být také na archivní úrovni.

Obnovení jako databáze

Vytvořte ID Azure Resource Manageru nové databáze PostgreSQL, která se má vytvořit (s cílovým serverem PostgreSQL, ke kterému byla přiřazena oprávnění, jak je popsáno výše). Zadejte požadovaný název databáze PostgreSQL. Například databázi PostgreSQL lze pojmenovat emprestored21 pod cílovým serverem PostgreSQL pojmenovaným targetossserver ve skupině targetrg prostředků s jiným předplatným:

$targetOssId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21

Initialize-AzDataProtectionRestoreRequest Pomocí příkazu připravte žádost o obnovení se všemi relevantními podrobnostmi:

$OssRestoreReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType AlternateLocation -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetResourceId $targetOssId -SecretStoreURI "https://restoreoss-test.vault.azure.net/secrets/dbauth3" -SecretStoreType AzureKeyVault

V případě bodu obnovení založeného na archivu potřebujete:

  1. Obnovte z archivu úložiště dat do úložiště dat trezoru.
  2. Upravte zdrojové úložiště dat.
  3. Přidejte další parametry pro určení priority znovunaplnění.
  4. Zadejte dobu, po kterou se má bod obnovení po hydrataci zachovat v datovém úložišti trezoru.
  5. Obnovte databázi z tohoto bodu obnovení

Pomocí následujícího příkazu připravte požadavek na všechny dříve uvedené operace najednou:

$OssRestoreFromArchiveReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore ArchiveStore -RestoreLocation $TestBkpVault.Location -RestoreType AlternateLocation -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetResourceId $targetOssId -SecretStoreURI "https://restoreoss-test.vault.azure.net/secrets/dbauth3" -SecretStoreType AzureKeyVault -RehydrationDuration 12 -RehydrationPriority Standard

Obnovit jako soubory

Načtěte identifikátor URI kontejneru v rámci účtu úložiště, ke kterému byla přiřazena oprávnění, jak je popsáno výše. Následující příklad používá kontejner pojmenovaný testcontainerrestore pod účtem úložiště s testossstorageaccount jiným předplatným:

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

Initialize-AzDataProtectionRestoreRequest Pomocí příkazu připravte žádost o obnovení se všemi relevantními podrobnostmi:

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

V případě bodu obnovení založeného na archivu upravte úložiště zdrojových dat. Přidejte prioritu rehydratace a dobu uchování (ve dnech) pro rehydratovaný bod obnovení:

$OssRestoreAsFilesFromArchiveReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore ArchiveStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768" -RehydrationDuration "14" -RehydrationPriority Standard

Spustit obnovení

Start-AzDataProtectionBackupInstanceRestore Pomocí příkazu aktivujte obnovení pomocí požadavku, který jste připravili dříve:

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

Sledování prací

Sledujte úlohy pomocí příkazu Get-AzDataProtectionJob. Můžete vypsat všechny úlohy a získat podrobnosti o konkrétní úloze.

Můžete také použít Az.ResourceGraph ke sledování úloh ve všech trezorech služby Backup. Search-AzDataProtectionJobInAzGraph Pomocí příkazu získáte příslušnou úlohu ve všech trezorech služby Backup:

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