Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье описывается, как использовать Azure PowerShell для восстановления баз данных PostgreSQL на сервере Azure Database для PostgreSQL, который вы резервировали с помощью Azure Backup. Вы также можете восстановить базу данных PostgreSQL с помощью портала Azure, Azure CLI и REST API.
Поскольку база данных PostgreSQL является базой данных, предоставляемой как платформа как услуга (PaaS), параметр восстановления Original-Location (OLR) для восстановления, заменяя существующую базу данных, из которой были сделаны резервные копии, не поддерживается. Вы можете восстановить базу данных из точки восстановления, чтобы создать базу данных в том же сервере Базы данных Azure для PostgreSQL или на любом другом сервере PostgreSQL. Этот параметр называется Alternate-Location recovery (ALR). ALR помогает сохранить исходную базу данных и восстановленную (новую) базу данных.
Примеры, приведенные в этой статье, относятся к существующему хранилищу резервных копий с именем TestBkpVault в группе testBkpVaultRGресурсов:
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"
Восстановление для создания новой базы данных PostgreSQL
Настройка разрешений
Хранилище резервных копий использует управляемое удостоверение для доступа к другим ресурсам Azure. Чтобы восстановить данные из резервной копии, управляемому удостоверению хранилища резервного копирования требуется набор разрешений на сервере Azure Database for PostgreSQL, на который должна быть восстановлена база данных.
Чтобы назначить соответствующие разрешения для системного управляемого удостоверения в хранилище на целевом сервере PostgreSQL, ознакомьтесь с набором разрешений, необходимых для резервного копирования базы данных PostgreSQL.
Чтобы восстановить точку восстановления в качестве файлов в учетную запись хранения, системно назначаемому управляемому удостоверению хранилища резервных копий требуется доступ к целевой учетной записи хранения.
Получите соответствующую точку восстановления
Извлеките все экземпляры с помощью Get-AzDataProtectionBackupInstance команды и определите соответствующий экземпляр:
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Вы также можете использовать Az.Resourcegraph и команду Search-AzDataProtectionBackupInstanceInAzGraph для поиска точек восстановления между экземплярами в различных хранилищах и подписках.
$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured
Чтобы отфильтровать критерии поиска, используйте возможности поиска клиента PowerShell:
Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured | Where-Object { $_.BackupInstanceName -match "empdb11"}
После идентификации экземпляра получите соответствующую точку восстановления:
$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName
Если необходимо получить точку восстановления из архивного уровня, добавьте фильтр клиента:
Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName | Where-Object {$_.Property.RecoveryPointDataStoresDetail[0].Type -match "Archive" }
Подготовка запроса на восстановление
Для базы данных PostgreSQL доступны разные варианты восстановления. Точку восстановления можно восстановить как другую базу данных или как файлы. Точка восстановления также может находиться на уровне архива.
Восстановить как базу данных
Создайте идентификатор Azure Resource Manager для создаваемой базы данных PostgreSQL (с целевым сервером PostgreSQL, которому были назначены разрешения, как описано ранее). Добавьте необходимое имя базы данных PostgreSQL. Например, база данных PostgreSQL может быть названа emprestored21 под целевым сервером PostgreSQL с именем targetossserver в группе targetrg ресурсов с другой подпиской:
$targetOssId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21
Initialize-AzDataProtectionRestoreRequest Используйте команду для подготовки запроса на восстановление со всеми соответствующими сведениями:
$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
Для архивной точки восстановления необходимо:
- Переместить данные из архивного хранилища в хранилище в активном режиме.
- Изменить исходное хранилище данных.
- Добавить другие параметры, чтобы указать приоритет восстановления.
- Укажите длительность хранения восстановленной точки восстановления в хранилище.
- Восстановите базу данных из этой точки восстановления.
Используйте следующую команду, чтобы подготовить запрос ко всем ранее упомянутым операциям одновременно:
$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
Восстановить в виде файлов
Получите URI контейнера в учетной записи хранения, к которому были назначены разрешения, как описано ранее. В следующем примере используется контейнер с именем testcontainerrestore в учетной записи хранения под именем testossstorageaccount с другой подпиской.
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
Initialize-AzDataProtectionRestoreRequest Используйте команду для подготовки запроса на восстановление со всеми соответствующими сведениями:
$OssRestoreAsFilesReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768"
Для точки восстановления на основе архива измените исходное хранилище данных. Добавьте приоритет восстановления данных и укажите длительность хранения в днях восстановленной точки резервного копирования:
$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
Запуск процесса восстановления
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 AzureDatabaseForPostgreSQL -Operation OnDemandBackup