共用方式為


使用資料保護 REST API 建立 PostgreSQL 資料庫的備份原則

備份原則會控管 Azure Database for PostgreSQL 中 PostgreSQL 資料庫備份的保留規範與排程。 適用於 PostgreSQL 的 Azure 資料庫提供資料庫備份的長期保留,並支援每天一次備份。

您可以重複使用現有的備份原則,將 PostgreSQL 資料庫的備份設定為保存庫,也可以 使用適用於 Azure 備份的資料保護 REST API 來建立 Azure 復原服務保存庫的備份原則。 在本文中,您會建立備份原則。

了解 PostgreSQL 備份政策

磁碟備份每天提供多個備份,而 Blob 備份是沒有觸發器的 連續 備份,而 PostgreSQL 備份則提供封存保護。 第一次傳送至保存庫的備份資料可以根據定義的規則或生命週期移至封存層。

在此內容中,下列階層可協助您瞭解 PostgreSQL 的備份原則物件:

  • 政策規則
    • 備份規則
      • 備份參數
        • 備份類型 (在此案例中為完整資料庫備份)
        • 初始資料存放區(備份最初登陸的位置)
        • 觸發器 (如何觸發備份)
          • 排程
          • 預設標記標準(將所有排定的備份連結到保留規則的一個預設標籤)
    • 預設保留規則 (依預設,套用至初始資料存放區上所有備份的規則)

原則物件會定義觸發備份類型、觸發備份的方式 (透過排程)、備份的標籤內容、備份的位置 (資料存放區),以及資料存放區中資料的生命週期。

PostgreSQL 的預設 PowerShell 物件會指出每週觸發 完整 備份。 備份會到達保存庫,並儲存三個月。

如果您想要將封存層新增至原則,您必須決定何時將資料從保存庫移至封存、資料在封存中保留多長時間,以及哪些排程備份應標記為可封存。 您必須新增保留規則,以定義從保存庫資料存放區到封存資料存放區的備份資料生命週期。 保留規則也會定義備份資料在封存資料存放區中保留的時間長度。 然後,您需要新增一個標籤,將排程備份標記為符合封存的資格。

PowerShell 產生的物件如下所示:

  • 政策規則
    • 備份規則
      • 備份參數
        • 備份類型 (在此案例中為完整資料庫備份)
        • 初始資料存放區(備份最初登陸的位置)
        • 觸發器 (如何觸發備份)
          • 排程
          • 預設標記準則 (將所有排程備份連結至保留規則的預設標籤)
          • 具有相同名稱之新保留規則的新標記準則
    • 預設保留規則 (依預設,套用至初始資料存放區上所有備份的規則)
    • 新的保留規則
      • 生命週期
        • 來源資料存放區
        • 來源資料存放區中的刪除時段
        • 複製到目標資料存放區

建立原則

重要事項

目前不支援更新或修改現有的原則。 相反地,請建立具有必要詳細資料的新原則,並將其指派給相關的備份執行個體。

若要建立備份原則,請使用下列 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 BaseBackupPolicyBackupPolicy BaseBackupPolicyResource 屬性

如需要求本文中定義的完整清單,請參閱 REST API 備份原則

要求本文範例

原則規定:

  • 觸發程序會排定在所選開始時間 (時間 + P1W) 開始每週備份。
  • 資料存放區是 保存庫存放區,因為備份會直接傳輸至保存庫。
  • 備份會在保存庫中保留三個月 (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:

  • 在一週中的多天新增備份。
  • 新增封存資料存放區,以長期保留 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 在預設保留規則下具有初始資料存放區的生命週期。 在此案例中,規則表示會在三個月後刪除備份資料。 您應該新增保留規則,以定義何時將資料 移至 封存資料存放區。 也就是說,備份資料會先複製到歸檔資料存放區,然後在保存庫資料存放區中刪除。

此外,規則應定義將資料保留在封存資料存放區中的持續時間。 讓我們命名這個新規則 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"
}