次の方法で共有


Data Protection REST API を使用して PostgreSQL データベースのバックアップ ポリシーを作成する

バックアップ ポリシーは、Azure Database for PostgreSQL での PostgreSQL データベース バックアップの保有期間とスケジュールを管理します。 Azure Database for PostgreSQL では、データベース バックアップの長期保有が提供され、1 日あたりのバックアップがサポートされます。

既存のバックアップ ポリシーを再利用して PostgreSQL データベースのバックアップをコンテナーに構成することも、 Data Protection REST API for Azure Backup を使用して Azure Recovery Services コンテナーのバックアップ ポリシーを作成することもできます。 この記事では、バックアップ ポリシーを作成します。

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

ディスク バックアップでは 1 日に複数のバックアップが提供され、BLOB バックアップはトリガーのない 継続的 バックアップですが、PostgreSQL バックアップではアーカイブ保護が提供されます。 コンテナーに最初に送信されるバックアップ データは、定義されたルールまたはライフ サイクルに従ってアーカイブ層に移動できます。

このコンテキストでは、次の階層が PostgreSQL のバックアップ ポリシー オブジェクトを理解するのに役立ちます。

  • ポリシー ルール
    • バックアップ規則
      • Backup パラメーター
        • バックアップの種類 (この場合はデータベースの完全バックアップ)
        • 初期データストア (バックアップが最初に配置される場所)
        • トリガー (バックアップのトリガー方法)
          • スケジュール
          • 既定のタグ付け基準 (スケジュールされたすべてのバックアップを保持ルールにリンクする既定のタグ)
    • 既定の保持ルール (既定では、初期データストア上のすべてのバックアップに適用されるルール)

ポリシー オブジェクトは、トリガーされるバックアップの種類、バックアップのトリガー方法 (スケジュールを介して)、タグ付けされる内容、格納場所 (データストア)、データストア内のデータのライフ サイクルを定義します。

PostgreSQL の既定の PowerShell オブジェクトは、毎週 完全 バックアップをトリガーすることを示しています。 バックアップはコンテナーに到達し、3 か月間保存されます。

アーカイブ層をポリシーに追加する場合は、データをコンテナーからアーカイブに移動するタイミング、データがアーカイブに保持される期間、スケジュールされたバックアップのうち、アーカイブ可能としてタグ付けする必要があるバックアップを決定する必要があります。 コンテナー データストアからアーカイブ データストアへのバックアップ データのライフ サイクルを定義する保持ルールを追加する必要があります。 保持ルールでは、バックアップ データがアーカイブ データストアに保持される期間も定義されます。 その後、スケジュールされたバックアップをアーカイブ対象としてマークするタグを追加する必要があります。

結果の PowerShell オブジェクトは次のようになります。

  • ポリシー ルール
    • バックアップ規則
      • Backup パラメーター
        • バックアップの種類 (この場合はデータベースの完全バックアップ)
        • 初期データストア (バックアップが最初に配置される場所)
        • トリガー (バックアップのトリガー方法)
          • スケジュール
          • 既定のタグ付け基準 (スケジュールされたすべてのバックアップを保持ルールにリンクする既定のタグ)
          • 同一名称の新しい保持ルールに対する新しいタグ付け基準
    • 既定の保持ルール (既定では、初期データストア上のすべてのバックアップに適用されるルール)
    • 新しい保持ルール
      • ライフサイクル
        • ソース データストア
        • ソース データストアでの削除の期間
        • ターゲット データストアにコピーする

ポリシーの作成

重要

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

バックアップ ポリシーを作成するには、次の PUT 操作を使用します。

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

URI は、 {policyName} 値と {vaultName} 値を提供します。 要求本文は追加情報を提供します。

要求本文を作成する

PostgreSQL バックアップのポリシーを作成するには、要求本文に次のコンポーネントが必要です。

名前 必須 タイプ 説明
properties true BaseBackupPolicy: BackupPolicy BaseBackupPolicyResource のプロパティ

要求本文の定義の完全な一覧については、 REST API バックアップ ポリシーを参照してください。

要求本文の例

次のようなポリシーです。

  • トリガーは、選択した開始時刻 (時間 + P1W) に週単位のバックアップ用にスケジュールされます。
  • バックアップはコンテナーに直接転送されるため、データストアはコンテナー ストアです。
  • バックアップはコンテナーに 3 か月間保持されます (P3M)。
{
  "datasourceTypes": [
    "Microsoft.DBforPostgreSQL/servers/databases"
  ],
  "name": "OssPolicy1",
  "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 を 2 つの変更で更新しましょう。

  • 週の複数の日にバックアップを追加します。
  • PostgreSQL データベース バックアップの長期保有のためのアーカイブ データストアを追加します。

次の例では、毎週のバックアップを毎週日曜日、水曜日、金曜日に変更します。 スケジュールの日付配列は日付を表し、その日付の曜日は曜日として扱われます。 また、これらのスケジュールが毎週繰り返されるように指定する必要があります。 そのため、スケジュール間隔は 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 か月後にバックアップ データを削除する規則となっています。 データをアーカイブ データストアに 移動 するタイミングを定義する新しい保持ルールを追加する必要があります。 つまり、バックアップ データは最初にアーカイブ データストアにコピーされ、次にコンテナー データストアで削除されます。

また、ルールでは、アーカイブ データストアにデータを保持する期間を定義する必要があります。 この新しいルールに Monthly名前を付けましょう。 バックアップをコンテナー データストアに 6 か月間保持し、アーカイブ データストアにコピーする必要があることを定義します。 次に、コンテナー データストア内のバックアップを削除し、アーカイブ データストアに 24 か月間データを保持します。 最後に、アーカイブ データストア内のデータを削除します。

"lifecycles": [
        {
          "deleteAfter": {
            "duration": "P3M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": []
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    },
    {
      "isDefault": false,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P6M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": {
            "copyAfter": {
              "objectType": "CopyOnExpiryOption"
            },
            "dataStore": {
              "dataStoreType": "ArchiveStore",
              "objectType": "DataStoreInfoBase"
            }
          }
        },
        {
          "deleteAfter": {
            "duration": "P24M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "ArchiveStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": null
        }
      ],
      "name": "Monthly",
      "objectType": "AzureRetentionRule"
    }

タグ付けの条件

保持ルールを追加するたびに、ポリシーの Trigger プロパティに対応するタグを追加する必要があります。 次の例では、適用する対応する保持ルールとまったく同じ名前の新しいタグを、条件 (月の最初の正常なバックアップ) と共に作成します。

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

{
  "criteria": [
    {
      "absoluteCriteria": [
        "FirstOfMonth"
      ],
      "objectType": "ScheduleBasedBackupCriteria"
    }
  ],
  "isDefault": false,
  "tagInfo": {
    "tagName": "Monthly"
  },
  "taggingPriority": 15
}

すべての変更を含める場合、ポリシー JSON は次のように表示されます。

{
  "datasourceTypes": [
    "Microsoft.DBforPostgreSQL/servers/databases"
  ],
  "name": "OssPolicy1",
  "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"
    },
    {
      "isDefault": false,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P6M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "VaultStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": {
            "copyAfter": {
              "objectType": "CopyOnExpiryOption"
            },
            "dataStore": {
              "dataStoreType": "ArchiveStore",
              "objectType": "DataStoreInfoBase"
            }
          }
        },
        {
          "deleteAfter": {
            "duration": "P24M",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "ArchiveStore",
            "objectType": "DataStoreInfoBase"
          },
          "targetDataStoreCopySettings": null
        }
      ],
      "name": "Monthly",
      "objectType": "AzureRetentionRule"
    }
  ]
}

ポリシーの作成の詳細については、「 バックアップ ポリシーの作成」を参照してください。

応答を確認する

バックアップ ポリシーの作成または更新は同期操作です。 操作が成功すると、次の状態の応答が返され、応答本文にポリシー コンテンツが含まれます。

名前 タイプ 説明
200 OK BaseBackupPolicyResource 操作が完了しました。

応答の例

{
    "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": "Monthly",
                                "id": "Monthly_"
                            },
                            "taggingPriority": 15,
                            "isDefault": false,
                            "criteria": [
                                {
                                    "absoluteCriteria": [
                                        "FirstOfMonth"
                                    ],
                                    "objectType": "ScheduleBasedBackupCriteria"
                                }
                            ]
                        },
                        {
                            "tagInfo": {
                                "tagName": "Default",
                                "id": "Default_"
                            },
                            "taggingPriority": 99,
                            "isDefault": true
                        }
                    ],
                    "objectType": "ScheduleBasedTriggerContext"
                },
                "dataStore": {
                    "dataStoreType": "VaultStore",
                    "objectType": "DataStoreInfoBase"
                },
                "name": "BackupWeekly",
                "objectType": "AzureBackupRule"
            },
            {
                "lifecycles": [
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P6M"
                        },
                        "targetDataStoreCopySettings": [
                            {
                                "dataStore": {
                                    "dataStoreType": "ArchiveStore",
                                    "objectType": "DataStoreInfoBase"
                                },
                                "copyAfter": {
                                    "objectType": "CopyOnExpiryOption"
                                }
                            }
                        ],
                        "sourceDataStore": {
                            "dataStoreType": "VaultStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    },
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P24M"
                        },
                        "targetDataStoreCopySettings": [],
                        "sourceDataStore": {
                            "dataStoreType": "ArchiveStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    }
                ],
                "isDefault": false,
                "name": "Monthly",
                "objectType": "AzureRetentionRule"
            },
            {
                "lifecycles": [
                    {
                        "deleteAfter": {
                            "objectType": "AbsoluteDeleteOption",
                            "duration": "P3M"
                        },
                        "targetDataStoreCopySettings": [],
                        "sourceDataStore": {
                            "dataStoreType": "VaultStore",
                            "objectType": "DataStoreInfoBase"
                        }
                    }
                ],
                "isDefault": true,
                "name": "Default",
                "objectType": "AzureRetentionRule"
            }
        ],
        "datasourceTypes": [
            "Microsoft.DBforPostgreSQL/servers/databases"
        ],
        "objectType": "BackupPolicy"
    },
    "id": "/subscriptions/ef4ab5a7-c2c0-4304-af80-af49f48af3d1/resourceGroups/DebRG1/providers/Microsoft.DataProtection/backupVaults/DebBackupVault/backupPolicies/OssPolicy1",
    "name": "OssPolicy1",
    "type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}