本文介绍如何创建备份策略,以使用 REST API 保护 Azure PostgreSQL 灵活服务器。
备份策略管理备份的保留时间和时间表。
可以重复使用现有的备份策略,为 PostgreSQL 灵活服务器配置到保管库的备份,或使用 REST API 为 Azure 恢复服务保管库创建备份策略。
了解 PostgreSQL 备份策略
在开始创建备份策略之前,请了解 PostgreSQL 的备份策略对象:
- PolicyRule
- BackupRule
- BackupParameter
- BackupType(在本例中为完整数据库备份)
- 初始数据存储(备份初始登陆位置)
- 触发器(如何触发备份)
- 基于计划
- 默认标记条件(一个默认“标记”用于所有计划的备份。此标记将备份链接到保留期规则)
- 默认保留规则(该规则默认应用于初始数据存储上的所有备份)
- BackupRule
此对象定义触发的备份类型、触发方式(通过计划)、标记为备份作的标记、存储备份的路径(数据存储)和数据存储中备份数据的生命周期。 PostgreSQL 灵活服务器的默认 PowerShell 对象每周触发完整备份,并将备份存储在保管库中,并将其保留三个月。
创建备份策略
若要创建 Azure 备份策略,请使用以下 PUT 操作:
重要
目前不支持更新或修改现有策略。 替代方法是使用所需的详细信息创建新策略,并将其分配给相关的备份实例。
PUT https://management.chinacloudapi.cn/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{policyName}?api-version=2021-01-01
{policyName}
和 {vaultName}
在 URI 中提供。 其他信息在请求正文中提供。
创建请求正文
例如,若要为 Azure Database for PostgreSQL 灵活服务器备份创建策略,请求正文需要以下组件:
名称 | 必选 | 类型 | DESCRIPTION |
---|---|---|---|
性能 | 真 实 | BaseBackupPolicy:BackupPolicy | BaseBackupPolicyResource properties |
有关请求正文中的完整定义列表,请参阅备份策略 REST API 文档。
示例请求正文
该政策说:
- 计划触发每周备份并选择开始时间(时间+P1W)。
- 数据存储是保管库存储,因为备份直接传输到保管库。
- 备份在保管库中保留三个月 (P3M)。
"properties": {
"datasourceTypes": [
"Microsoft.DBforPostgreSQL/flexibleServers"
],
"name": "PgFlexPolicy1",
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"isDefault": true,
"tagInfo": {
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
}
}
重要
时间格式支持 DateTime
;仅 Time
不支持。 一天中的时间指示 备份开始时间,而不是备份完成的时间。
让我们通过一项更改(即在一周中的多天进行备份)来更新上述 JSON 模板。
以下示例修改每周备份,以在每周的星期日、星期三和星期五备份。 计划日期数组提及日期,一周中的这些日期被视为一周中的几天。 还需要指定这些计划应每周重复一次。 因此,计划间隔为“1”,间隔类型为“每周”。
定时触发:
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T22:00:00+00:00/P1W",
"R/2021-08-18T22:00:00+00:00/P1W",
"R/2021-08-20T22:00:00+00:00/P1W"
],
"timeZone": "UTC"
}
如果要添加另一个保留规则,请修改 策略 JSON ,如下所示:
上述 JSON 在默认保留规则下具有初始数据存储的生命周期。 在此方案中,该规则提到在三个月后删除备份数据。 可以添加一个新的保留规则,该规则定义每月开始时创建的第一个备份的更长的保留期 6 个月。 让我们将此新规则命名为 每月。
保留生命周期:
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
},
{
"lifecycles": [
{
"deleteAfter": {
"objectType": "AbsoluteDeleteOption",
"duration": "P6M"
},
"targetDataStoreCopySettings": [],
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
}
}
],
"isDefault": false,
"name": "Monthly",
"objectType": "AzureRetentionRule"
}
每次添加保留规则时,都需要在策略的 Trigger 属性中添加相应的标记。 以下示例创建一个新标记以及条件(月份的第一次成功备份),其名称与要应用的相应保留规则完全相同。
本例中的标记条件应命名为“每月”。
标记条件:
"criteria": [
{
"absoluteCriteria": [
"FirstOfMonth"
],
"objectType": "ScheduleBasedBackupCriteria"
}
],
"isDefault": false,
"tagInfo": {
"tagName": "Monthly"
},
"taggingPriority": 15
}
包含所有更改后,策略 JSON 将如下所示:
{
"properties": {
"datasourceTypes": [
"Microsoft.DBforPostgreSQL/flexibleServers"
],
"name": "PgFlexPolicy1",
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T22:00:00+00:00/P1W",
"R/2021-08-18T22:00:00+00:00/P1W",
"R/2021-08-20T22:00:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"isDefault": true,
"tagInfo": {
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
},
{
"criteria": [
{
"absoluteCriteria": [
"FirstOfMonth"
],
"objectType": "ScheduleBasedBackupCriteria"
}
],
"isDefault": false,
"tagInfo": {
"tagName": "Monthly"
},
"taggingPriority": 15
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
},
{
"lifecycles": [
{
"deleteAfter": {
"objectType": "AbsoluteDeleteOption",
"duration": "P6M"
},
"targetDataStoreCopySettings": [],
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
}
}
],
"isDefault": false,
"name": "Monthly",
"objectType": "AzureRetentionRule"
}
]
}
}
反应
创建或更新备份策略是同步作,在作成功后返回 “确定 ”。
名称 | 类型 | DESCRIPTION |
---|---|---|
200 正常 | BaseBackupPolicyResource | 好的 |
示例响应:
操作完成后,它将在响应正文中返回 200 (OK) 和策略内容。
{
"properties": {
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"trigger": {
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T22:00:00+00:00/P1W",
"R/2021-08-18T22:00:00+00:00/P1W",
"R/2021-08-20T22:00:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"tagInfo": {
"tagName": "Default",
"id": "Default_"
},
"taggingPriority": 99,
"isDefault": true
},
{
"tagInfo": {
"tagName": "Monthly",
"id": "Monthly_"
},
"taggingPriority": 15,
"isDefault": false,
"criteria": [
{
"absoluteCriteria": [
"FirstOfMonth"
],
"objectType": "ScheduleBasedBackupCriteria"
}
]
}
],
"objectType": "ScheduleBasedTriggerContext"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule"
},
{
"lifecycles": [
{
"deleteAfter": {
"objectType": "AbsoluteDeleteOption",
"duration": "P3M"
},
"targetDataStoreCopySettings": [],
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
}
}
],
"isDefault": true,
"name": "Default",
"objectType": "AzureRetentionRule"
},
{
"lifecycles": [
{
"deleteAfter": {
"objectType": "AbsoluteDeleteOption",
"duration": "P6M"
},
"targetDataStoreCopySettings": [],
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
}
}
],
"isDefault": false,
"name": "Monthly",
"objectType": "AzureRetentionRule"
}
],
"datasourceTypes": [
"Microsoft.DBforPostgreSQL/flexibleServers"
],
"objectType": "BackupPolicy"
},
"id": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/PGFlexIntegration/providers/Microsoft.DataProtection/BackupVaults/PgFlexTestVault/backupPolicies/PgFlexPolicy1",
"name": "PgFlexPolicy1",
"type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}
后续步骤
使用 REST API 为 Azure Database for PostgreSQL 灵活服务器启用保护。
有关 Azure 备份 REST API 的详细信息,请参阅以下文章: