Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Политика резервного копирования управляет хранением резервных копий и расписанием резервного копирования. Резервное копирование баз данных Azure PostgreSQL обеспечивает долгосрочное хранение и поддерживает одну резервную копию в день.
Вы можете повторно использовать существующую политику резервного копирования для настройки резервного копирования баз данных PostgreSQL в хранилище или создать политику резервного копирования для хранилища Служб восстановления Azure с помощью REST API.
Понимание политики резервного копирования PostgreSQL
Резервное копирование дисков обеспечивает создание нескольких резервных копий в день, а резервное копирование BLOB-объектов — это непрерывное резервное копирование без триггера, но резервное копирование PostgreSQL обеспечивает защиту архива. Данные резервных копий, которые сначала отправляются в хранилище, можно перенаправить на архивный уровень в соответствии с определенным правилом или жизненным циклом. В этом контексте рассмотрим объект политики резервного копирования для PostgreSQL.
- Правило политики
- BackupRule
- BackupParameter
- BackupType (тип резервной копии — в этом случае полная резервная копия базы данных)
- Исходное хранилище данных (где первоначально будут храниться резервные копии)
- Триггер (активация резервной копии)
- По расписанию
- Стандартные условия добавления тегов (тег по умолчанию для всех запланированных операций резервного копирования; этот тег связывает резервные копии с правилом хранения)
- BackupParameter
- Правило хранения по умолчанию (правило, которое будет по умолчанию применяться ко всем резервным копиям в начальном хранилище данных)
- BackupRule
Таким образом, этот объект определяет, какой тип резервного копирования запускается, как он запускается (по расписанию), какие теги содержат резервные копии, где они находятся (в хранилище данных), а также каков жизненный цикл резервных копий данных в хранилище. По умолчанию объект PowerShell для PostgreSQL запускает полное резервное копирование каждую неделю, и такие копии будут попадать в хранилище, где они хранятся в течение трех месяцев.
Если вы хотите добавить архивный уровень хранения в политику, необходимо решить, когда данные будут перемещены из хранилища в архив, как долго данные будут находиться в архиве и какие из резервных копий, предусмотренных расписанием, должны быть помечены как архивируемые. Поэтому необходимо добавить правило хранения, которое будет определять жизненный цикл резервных копий от основного хранилища данных до архивного хранилища и длительность их нахождения в архивном хранилище данных. Затем нужно добавить тег, который пометит резервные копии, предусмотренные расписанием, как подходящие для архивации. Результирующий объект PowerShell выглядит следующим образом:
- Правило политики
- BackupRule
- BackupParameter
- BackupType (тип резервной копии — в этом случае полная резервная копия базы данных)
- Исходное хранилище данных (где первоначально будут храниться резервные копии)
- Триггер (активация резервной копии)
- Основано на расписании
- Стандартные условия добавления тегов (тег по умолчанию для всех запланированных операций резервного копирования; этот тег связывает резервные копии с правилом хранения)
- Новые критерии тегирования для нового правила хранения с тем же именем "X"
- BackupParameter
- Правило хранения по умолчанию (правило, которое будет по умолчанию применяться ко всем резервным копиям в начальном хранилище данных)
- Новое правило хранения под названием "X"
- Жизненный цикл
- Исходное хранилище данных
- Удаление по истечении периода хранения в исходном хранилище данных
- Копирование в целевое хранилище данных
- Жизненный цикл
- BackupRule
Чтобы создать политику для резервного копирования баз данных PostgreSQL, выполните следующие действия:
Создание политики
Внимание
В настоящее время обновление или изменение существующей политики не поддерживается. В качестве альтернативы можно создать новую политику с необходимыми сведениями и назначить ее соответствующему экземпляру резервной копии.
Для создания политики 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. Дополнительные сведения предоставляются в тексте запроса.
Создание текста запроса
Например, чтобы создать политику резервного копирования PostgreSQL, текст запроса должен иметь следующие компоненты:
Имя | Обязательно | Тип | Описание |
---|---|---|---|
свойства | Истина | BaseBackupPolicy:BackupPolicy | Свойства 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"
}
]
}
Внимание
Поддерживаемые форматы времени: только дата и время; время по отдельности не поддерживается. Указываемое время суток обозначает время запуска резервного копирования, а не время, когда создание резервной копии будет завершено.
Обновим приведенный выше файл 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"
}
При каждом добавлении правила хранения необходимо добавить соответствующий тег в свойство Триггер политики. В следующем примере создается новый тег вместе с критериями (что означает первую успешную резервную копию месяца) с точно таким же именем, как соответствующее правило хранения, которое будет применяться.
В этом примере условия тега должны называться 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"
}
]
}
Дополнительные сведения о создании политики см. в документе политики резервного копирования базы данных PostgreSQL .
Отклики
Создание или обновление политики резервного копирования является синхронной операцией, которая возвращает значение ОК после успешного выполнения операции.
Имя | Тип | Описание |
---|---|---|
200 OK | BaseBackupPolicyResource | ОК |
Примеры ответов
После завершения операции возвращается код 200 (ОК) с содержимым политики в тексте ответа.
{
"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"
}
Следующие шаги
Подробнее о REST API Azure Backup см. в следующих статьях: