使用 REST API 为 Azure Database for PostgreSQL 灵活服务器创建 Azure 数据保护备份策略

本文介绍如何创建备份策略,以使用 REST API 保护 Azure PostgreSQL 灵活服务器。

备份策略管理备份的保留时间和时间表。

可以重复使用现有的备份策略,为 PostgreSQL 灵活服务器配置到保管库的备份,或使用 REST API 为 Azure 恢复服务保管库创建备份策略

了解 PostgreSQL 备份策略

在开始创建备份策略之前,请了解 PostgreSQL 的备份策略对象:

  • PolicyRule
    • BackupRule
      • BackupParameter
      • BackupType(在本例中为完整数据库备份)
      • 初始数据存储(备份初始登陆位置)
      • 触发器(如何触发备份)
      • 基于计划
      • 默认标记条件(一个默认“标记”用于所有计划的备份。此标记将备份链接到保留期规则)
    • 默认保留规则(该规则默认应用于初始数据存储上的所有备份)

此对象定义触发的备份类型、触发方式(通过计划)、标记为备份作的标记、存储备份的路径(数据存储)和数据存储中备份数据的生命周期。 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 的详细信息,请参阅以下文章: