次の方法で共有


REST API を使用して Azure Database for PostgreSQL - フレキシブル サーバー用の Azure Data Protection バックアップ ポリシーを作成する

この記事では、REST API を使用して Azure PostgreSQL フレキシブル サーバーを保護するバックアップ ポリシーを作成する方法について説明します。

バックアップ ポリシーを使用して、バックアップの保持期間とスケジュールを制御します。

既存のバックアップ ポリシーを再利用して PostgreSQL フレキシブル サーバーのコンテナーへのバックアップを構成したり、 REST API を使用して Azure Recovery Services コンテナーのバックアップ ポリシーを作成したりできます。

PostgreSQL のバックアップ ポリシーについて

バックアップ ポリシーの作成を開始する前に、PostgreSQL のバックアップ ポリシー オブジェクトについて説明します。

  • PolicyRule
    • BackupRule
      • BackupParameter
      • BackupType (この場合はデータベースの完全バックアップ)
      • 初期データストア (バックアップを最初に保存する場所)
      • トリガー (バックアップのトリガー方法)
      • スケジュール ベース
      • 既定のタグ付け条件 (スケジュールされたすべてのバックアップの既定の "タグ"。このタグにより、バックアップが保持ルールにリンクされます)
    • 既定の保有規則 (初期データストアにおいて、既定ですべてのバックアップに適用される規則)

このオブジェクトは、トリガーされるバックアップの種類、トリガー方法 (スケジュールを使用)、バックアップ操作用にマークされたタグ、バックアップが格納されるパス (データストア)、およびデータストア内のバックアップ データのライフサイクルを定義します。 PostgreSQL - フレキシブル サーバーの既定の PowerShell オブジェクトは、毎週完全バックアップをトリガーし、バックアップをコンテナーに格納し、3 か月間保持します。

バックアップ ポリシーの作成

Azure Backup ポリシーを作成するには、次の PUT 操作を使用します。

重要

現在、既存のポリシーの更新または変更はサポートされていません。 代わりに、必要な詳細情報を使用して新しいポリシーを作成し、関連するバックアップ インスタンスに割り当てることができます。

PUT https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{policyName}?api-version=2021-01-01

{policyName}{vaultName} は URI で指定します。 その他の情報は要求本文で指定します。

リクエストボディを作成する

たとえば、Azure Database for PostgreSQL - フレキシブル サーバー バックアップのポリシーを作成するには、要求本文に次のコンポーネントが必要です。

名前 必須 タイプ 説明
プロパティ 正しい ベースバックアップポリシー:バックアップポリシー BaseBackupPolicyResource properties

要求本文での定義の完全なリストについては、バックアップ ポリシー REST API に関するドキュメントを参照してください。

要求本文の例

ポリシーには、次のように表示されます。

  • 毎週のバックアップをトリガーし、開始時刻 (時間 + P1W) を選択するようにスケジュールされています。
  • データストアはコンテナー ストアです。バックアップはコンテナーに直接転送されるためです。
  • バックアップは 3 か月間保管庫に保存されます (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 のみがサポートされていません。 時刻は、1日のうちバックアップの開始時刻を示しており、バックアップが完了する時刻ではありません。

上記の JSON テンプレートを 1 つの変更 (週の複数日のバックアップ) で更新しましょう。

次の例では、毎週毎週日曜日、水曜日、金曜日にバックアップするように週単位のバックアップを変更します。 スケジュールの日付配列は日付を示し、その週の日付は曜日として取得されます。 また、これらのスケジュールが毎週繰り返されるように指定する必要があります。 そのため、スケジュールの間隔は 1、間隔の種類は Weekly となっています。

スケジュールされたトリガー:

"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 には、既定の保有規則のもと、初期データストアのライフサイクルが設定されています。 このシナリオでは、3 か月後のバックアップ データの削除に関する規則が言及されています。 毎月の開始時に最初に作成されたバックアップに対して、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 プロパティに対応するタグを追加する必要があります。 次の例では、適用する対応する保持ルールとまったく同じ名前の条件 (月の最初の正常なバックアップ) と共に新しいタグを作成します。

この例では、タグ条件の名前は Monthly である必要があります。

タグ付けの条件:

  "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"
		}
	  ]
	}
}

ポリシーの作成の詳細については、 PostgreSQL データベースのバックアップ ポリシーに関するドキュメントを参照してください。

応答

バックアップ ポリシーの作成または更新は同期操作であり、操作が成功すると OK を 返します。

名前 タイプ 説明
200 OK BaseBackupPolicyResource [OK]

応答の例:

操作が完了すると、応答本文にポリシーの内容が含まれる 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 Backup REST API の詳細については、次の記事を参照してください。