Megosztás a következőn keresztül:


PostgreSQL-adatbázisok visszaállítása az Azure PowerShell használatával

Ez a cikk azt ismerteti, hogyan állíthatja vissza a PostgreSQL-adatbázisokat az Azure PowerShell használatával egy Azure Database for PostgreSQL-kiszolgálóra , amelyről az Azure Backupon keresztül biztonsági másolatot készít. A PostgreSQL-adatbázisokat az Azure Portal, az Azure CLI és a REST API használatával is visszaállíthatja.

Mivel a PostgreSQL-adatbázis szolgáltatásként nyújtott platform (PaaS) adatbázis, a Original-Location Helyreállítási (OLR) beállítás nem támogatott a meglévő adatbázis lecserélésével (ahonnan a biztonsági másolatokat készítették). A helyreállítási pontról visszaállítva létrehozhat egy új adatbázist ugyanabban az Azure Database for PostgreSQL-kiszolgálón vagy bármely más PostgreSQL-kiszolgálón. Ezt a lehetőséget Alternate-Location Recovery (ALR) néven nevezzük. Az ALR segít megőrizni a forrásadatbázist és a visszaállított (új) adatbázist is.

A cikkben szereplő példák az erőforráscsoport TestBkpVaultalatt elnevezett testBkpVaultRG meglévő Backup-tárolóra vonatkoznak:

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

Visszaállítás új PostgreSQL-adatbázis létrehozásához

Engedélyek beállítása

A Backup-tárolók felügyelt identitással férnek hozzá más Azure-erőforrásokhoz. A biztonsági mentésből való visszaállításhoz a Backup-tároló felügyelt identitásához engedélykészlet szükséges azon az Azure Database for PostgreSQL-kiszolgálón, amelyre az adatbázist vissza kell állítani.

Ha a tároló rendszer által hozzárendelt felügyelt identitásának megfelelő engedélyeket szeretne hozzárendelni a cél PostgreSQL-kiszolgálón, tekintse meg a PostgreSQL-adatbázisok biztonsági mentéséhez szükséges engedélyeket.

Ha fájlként szeretné visszaállítani a helyreállítási pontot egy tárfiókba, a Backup-tároló rendszer által hozzárendelt felügyelt identitásának hozzáférésre van szüksége a céltárfiókhoz.

Hozd be a megfelelő helyreállítási pontot

Kérje le az összes példányt a Get-AzDataProtectionBackupInstance parancs használatával, és azonosítsa a megfelelő példányt:

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

Használhatja a Az.Resourcegraph és a Search-AzDataProtectionBackupInstanceInAzGraph parancsot a helyreállítási pontok keresésére példányok között, több tárolóban és előfizetésben.

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

A keresési feltételek szűréséhez használja a PowerShell-ügyfél keresési képességeit:

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

A példány azonosítása után kérje le a megfelelő helyreállítási pontot:

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

Ha le szeretné kérni a helyreállítási pontot az archív rétegről, adjon hozzá egy ügyfélszűrőt:

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

A visszaállítási kérelem előkészítése

A PostgreSQL-adatbázisokhoz különböző visszaállítási lehetőségek állnak rendelkezésre. A helyreállítási pontot visszaállíthatja egy másik adatbázisként, vagy visszaállíthatja fájlként. A helyreállítási pont az archív szinten is lehet.

Adatbázisként visszaállítani

Hozza létre a létrehozandó új PostgreSQL-adatbázis Azure Resource Manager-azonosítóját (a célKént megadott PostgreSQL-kiszolgálóval, amelyhez engedélyek lettek rendelve, a korábban részletezett módon). Adja meg a szükséges PostgreSQL-adatbázisnevet. Egy PostgreSQL-adatbázis például egy másik előfizetéssel rendelkező erőforráscsoportban emprestored21 elnevezett targetossserver cél PostgreSQL-kiszolgáló alatt nevezhető eltargetrg:

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

Initialize-AzDataProtectionRestoreRequest A paranccsal készítse elő a visszaállítási kérést az összes releváns részlettel:

$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

Archívum alapú helyreállítási ponthoz a következőkre van szükség:

  1. Rehidratálás az archív adattárból a tárolóadattárba.
  2. Módosítsa a forrásadattárat.
  3. Adjon hozzá további paramétereket a rehidratálási prioritás megadásához.
  4. Adja meg azt az időtartamot, amelyre a rehidratált helyreállítási pontot meg kell őrizni a tárolóadattárban.
  5. Állítsa vissza az adatbázist ebből a helyreállítási pontból.

A következő paranccsal egyszerre készítse elő a kérést az összes korábban említett művelethez:

$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

Fájlokként visszaállítás

A korábban részletezett módon kérje le annak a tárolónak az URI-ját a tárfiókban, amelyhez engedélyek lettek hozzárendelve. Az alábbi példa egy másik előfizetéssel rendelkező tárfiók alatt elnevezett testcontainerrestoretestossstorageaccount tárolót használ:

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

Initialize-AzDataProtectionRestoreRequest A paranccsal készítse elő a visszaállítási kérést az összes releváns részlettel:

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

Az archív helyreállítási pont esetében módosítsa a forrásadattárat. Adja hozzá a rehidratált helyreállítási pont rehidratálási prioritását és a megőrzési időtartamát, napokban:

$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

A visszaállítás indítása

Start-AzDataProtectionBackupInstanceRestore A paranccsal aktiválhatja a visszaállítást a korábban előkészített kéréssel:

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

Feladatok nyomon követése

A parancs használatával nyomon követheti a Get-AzDataProtectionJob feladatokat. Felsorolhatja az összes munkát, és lekérheti egy adott munka részleteit.

A feladatok nyomon követésére is használható Az.ResourceGraph az összes Backup-tárolóban. Search-AzDataProtectionJobInAzGraph A parancs használatával lekérheti az összes Backup-tárolóban található megfelelő feladatot:

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