你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure PowerShell(预览版)还原 Azure Database for PostgreSQL - 灵活服务器

本文介绍如何还原使用 Azure 备份备份的 Azure Database for PostgreSQL - 灵活服务器。

本文将指导如何进行以下操作:

  • 还原以创建新的 PostgreSQL - 灵活服务器

  • 跟踪还原操作状态

我们会在示例中提到资源组 testBkpVaultRG 下现有的备份保管库 TestBkpVault 。

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

还原以创建新的 PostgreSQL 数据库

设置权限

备份保管库使用托管标识来访问其他 Azure 资源。 若要从备份还原,备份保管库的托管标识需要对服务器应还原到的存储帐户拥有一组权限。

若要在目标存储帐户上为保管库的系统分配的托管标识分配相关权限,请参阅备份 Azure PostgreSQL 数据库所需的权限集

若要将恢复点作为文件还原到存储帐户,备份保管库的系统分配的托管标识需要对目标存储帐户的访问权限

正在提取相关恢复点

使用 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 数。

后续步骤