다음을 통해 공유


데이터 보호 REST API를 사용하여 PostgreSQL 데이터베이스에 대한 백업 정책 만들기

백업 정책은 Azure Database for PostgreSQL에서 PostgreSQL 데이터베이스 백업의 보존 및 일정을 제어합니다. Azure Database for PostgreSQL은 데이터베이스 백업의 장기 보존을 제공하고 매일 백업을 지원합니다.

기존 백업 정책을 다시 사용하여 PostgreSQL 데이터베이스의 백업을 볼트에 구성하거나, Azure Backup용 데이터 보호 REST API를 사용하여 Azure Recovery Services 볼트용 백업 정책을 만들 수 있습니다. 이 문서에서는 백업 정책을 만듭니다.

PostgreSQL 백업 정책 이해

디스크 백업은 하루에 여러 백업을 제공하고 Blob 백업은 트리거 없이 연속 백업인 반면 PostgreSQL 백업은 보관 보호를 제공합니다. 처음 빈에 전송된 백업 데이터는 정의된 규칙이나 라이프사이클에 따라 보관 계층으로 옮길 수 있습니다.

이 컨텍스트에서 다음 계층 구조는 PostgreSQL에 대한 백업 정책 개체를 이해하는 데 도움이 될 수 있습니다.

  • 정책 규칙
    • 백업 규칙
      • Backup 매개 변수
        • 백업 유형(이 경우 전체 데이터베이스 백업)
        • 초기 데이터 저장소(백업이 처음에 배치되는 위치)
        • 트리거(백업이 트리거되는 방법)
          • Schedule
          • 기본 태그 지정 조건(예약된 모든 백업을 보존 규칙에 연결하는 기본 태그)
    • 기본 보존 규칙(기본적으로 초기 데이터 저장소의 모든 백업에 적용되는 규칙)

정책 개체는 어떤 유형의 백업이 트리거되는지, 어떤 방식(일정에 따라)으로 트리거되는지, 어떤 태그가 지정되는지, 어디에 저장되는지(데이터 저장소), 그리고 저장소 내 데이터의 수명 주기를 정의합니다.

PostgreSQL의 기본 PowerShell 개체는 매주 전체 백업을 트리거한다고 합니다. 백업은 금고에 도달하여 3개월 동안 저장됩니다.

정책에 보관 계층을 추가하려면 데이터를 보관소에서 통합보관소로 언제 이동할지, 데이터가 보관소에 얼마나 머무르는지, 그리고 예약된 백업 중 어떤 것이 보관 가능으로 태그될지 결정해야 합니다. 보관 저장소에서 아카이브 저장소로 백업 데이터의 수명 주기를 정의하는 규칙을 추가해야 합니다. 또한 보존 규칙은 백업 데이터가 보관 데이터 저장소에 유지되는 기간을 정의합니다. 그런 다음 예약된 백업을 보관할 수 있는 것으로 표시하는 태그를 추가해야 합니다.

결과 PowerShell 개체는 다음과 같습니다.

  • 정책 규칙
    • 백업 규칙
      • Backup 매개 변수
        • 백업 유형(이 경우 전체 데이터베이스 백업)
        • 초기 데이터 저장소(백업이 처음에 배치되는 위치)
        • 트리거(백업이 트리거되는 방법)
          • Schedule
          • 기본 태그 지정 조건(예약된 모든 백업을 보존 규칙에 연결하는 기본 태그)
          • 이름이 같은 새 보존 규칙에 대한 새 태그 지정 조건
    • 기본 보존 규칙(기본적으로 초기 데이터 저장소의 모든 백업에 적용되는 규칙)
    • 새 보존 규칙
      • 수명 주기
        • 원본 데이터 저장소
        • 원본 데이터 저장소에서 삭제하는 기간
        • 대상 데이터 저장소에 복사

정책 만들기

중요

현재 기존 정책의 업데이트 또는 수정을 지원하지 않습니다. 대신 필요한 세부 정보를 사용하여 새 정책을 만들고 관련 백업 인스턴스에 할당합니다.

백업 정책을 만들려면 다음 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을 업데이트해 보겠습니다.

  • 요일 여러 일에 백업을 추가합니다.
  • 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"
}