Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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:
- Obnovte z archivu úložiště dat do úložiště dat trezoru.
- Upravte zdrojové úložiště dat.
- Přidejte další parametry pro určení priority znovunaplnění.
- Zadejte dobu, po kterou se má bod obnovení po hydrataci zachovat v datovém úložišti trezoru.
- 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