你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何使用 Azure CLI 备份 Azure Database for PostgreSQL 灵活服务器。
先决条件
在备份 Azure Database for PostgreSQL 灵活服务器之前,请查看备份 Azure Database for PostgreSQL 灵活服务器 支持的方案和限制。
创建备份保管库
备份保管库是 Azure 中的存储实体。 它存储 Azure 备份支持的新工作负荷的备份数据。 例如,Azure Database for PostgreSQL 灵活服务器、存储帐户中的 blob 以及 Azure 磁盘。 备份保管库帮助组织备份数据,并最大限度降低管理开销。 备份保管库基于 Azure 的 Azure 资源管理器型号,提供增强功能帮助保护备份数据。
在创建备份保管库之前,请选择保管库数据的存储冗余。 然后继续使用该存储冗余和位置创建备份保管库。
在本文中,我们在资源组 testBkpVaultRG
下的区域 westus
创建备份保管库 TestBkpVault
。 使用 az dataprotection vault create
命令创建备份保管库。 详细了解创建备份保管库。
az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l westus --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
{
"eTag": null,
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
"identity": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
},
"___location": "westus",
"name": "TestBkpVault",
"properties": {
"provisioningState": "Succeeded",
"storageSettings": [
{
"datastoreType": "VaultStore",
"type": "LocallyRedundant"
}
]
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"tags": null,
"type": "Microsoft.DataProtection/backupVaults"
}
配置备份
在为数据库配置保护之前,请确保创建备份策略。 创建保管库和策略后,请按照以下步骤保护 Azure Database for PostgreSQL 灵活服务器:
- 提取要保护的 PostgreSQL 灵活服务器的 ARM ID
- 授予对备份保管库的访问权限
- 准备备份配置请求
提取要保护的 PostgreSQL 灵活服务器的 ARM ID
提取要保护的 PostgreSQL 灵活服务器的 Azure 资源管理器 ID (ARM ID)。 此 ID 充当数据库的标识符。 我们使用 PostgreSQL 灵活服务器 testposgresql
下名为 empdb11
的数据库示例,该数据库存在于资源组 ossrg
不同的订阅下。
下面的示例使用 bash。
ossId="/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/flexibleServers/archive-postgresql-ccy/databases/empdb11"
授予对备份保管库的访问权限
备份保管库必须连接到 PostgreSQL 灵活服务器,然后通过密钥保管库中的密钥访问数据库。 因此,它需要访问 PostgreSQL 灵活服务器和密钥保管库。 获取对备份保管库的托管服务标识 (MSI) 的访问权限。
检查 PostgreSQL 灵活服务器和存储数据库密钥的 Azure 密钥保管库上的备份保管库的托管服务标识 (MSI) 所需的权限。
准备备份配置请求
设置所有相关权限后,通过运行以下命令配置备份:
使用相关保管库、策略、PostgreSQL 灵活服务器数据库通过
az dataprotection backup-instance initialize
命令准备相关请求。az dataprotection backup-instance initialize --datasource-id $ossId --datasource-type AzureDatabaseForPostgreSQLFlexibleServer -l <vault-___location> --policy-id <policy_arm_id> --secret-store-type AzureKeyVault --secret-store-uri $keyURI > OSSBkpInstance.JSON
使用
az dataprotection backup-instance create
命令提交请求以保护数据库。az dataprotection backup-instance create --resource-group testBkpVaultRG --vault-name TestBkpVault TestBkpvault --backup-instance .\OSSBkpInstance.JSON
运行按需备份
触发备份时指定保留规则。 要查看策略中的保留规则,请导航到策略 JSON 文件以获取保留规则。 在下面的示例中,有两个保留规则,其名称为“默认”和“每月”。 我们使用“每月”规则进行按需备份。
az dataprotection backup-policy show -g ossdemorg --vault-name ossdemovault-1 --subscription e3d2d341-4ddb-4c5d-9121-69b7e719485e --name osspol5
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e-69b7e719485e/resourceGroups/ossdemorg/providers/Microsoft.DataProtection/backupVaults/ossdemovault-1/backupPolicies/osspol5",
"name": "osspol5",
"properties": {
"datasourceTypes": [
" Microsoft.DBforPostgreSQL/flexibleServers/databases"
],
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-04T20:00:00+00:00/P1W",
"R/2020-04-01T20:00:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"criteria": [
{
"absoluteCriteria": [
"FirstOfMonth"
],
"daysOfMonth": null,
"daysOfTheWeek": null,
"monthsOfYear": null,
"objectType": "ScheduleBasedBackupCriteria",
"scheduleTimes": null,
"weeksOfTheMonth": null
}
],
"isDefault": false,
"tagInfo": {
"eTag": null,
"id": "Monthly_",
"tagName": "Monthly"
},
"taggingPriority": 15
},
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": false,
"lifecycles": [
{
"deleteAfter": {
"duration": "P10Y",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Monthly",
"objectType": "AzureRetentionRule"
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P1Y",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
},
"resourceGroup": "ossdemorg",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}
若要触发按需备份,请使用 az dataprotection backup-instance adhoc-backup
命令。
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
跟踪作业
使用 az dataprotection job list
命令跟踪所有作业。 可列出所有作业并提取特定作业的详细信息。
还可使用 Az.ResourceGraph 来跟踪所有备份保管库中的所有作业。 使用 az dataprotection job list-from-resourcegraph
命令提取跨备份保管库的相关作业。
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQLFlexibleServer --status Completed