Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается резервное копирование баз данных PostgreSQL на виртуальных машинах Azure с помощью Azure CLI. Вы также можете настроить резервное копирование с помощью портала Azure, Azure PowerShell и REST API для баз данных PostgreSQL.
Дополнительные сведения о поддерживаемых сценариях и часто задаваемых вопросы о резервном копировании базы данных Azure для PostgreSQL.
Создайте резервное хранилище
Хранилище резервных копий — это элемент хранилища в Azure. Он сохраняет данные резервного копирования для новых рабочих нагрузок, поддерживаемых Azure Backup, таких как серверы Базы данных Azure для PostgreSQL, большие двоичные объекты в учетной записи хранения и диски Azure. Хранилища Azure Backup упрощают организацию данных резервного копирования и одновременно снижают накладные затраты на управление. Хранилища резервных копий основаны на модели Azure Resource Manager, которая предоставляет расширенные возможности для защиты резервных данных.
Перед созданием хранилища Backup выберите избыточность данных в хранилище. Затем перейдите к созданию резервного хранилища с данной избыточностью и местоположением.
В этой статье вы создадите хранилище резервных копий с именем TestBkpVault
в регионе westus
в группе testBkpVaultRG
ресурсов.
az dataprotection vault create
Используйте команду для создания хранилища резервных копий.
Дополнительные сведения о создании хранилища резервных копий.
az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l westus --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
{
"eTag": null,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
"identity": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
},
"location": "westus",
"name": "TestBkpVault",
"properties": {
"provisioningState": "Succeeded",
"storageSettings": [
{
"datastoreType": "VaultStore",
"type": "LocallyRedundant"
}
]
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"tags": null,
"type": "Microsoft.DataProtection/backupVaults"
}
Создание политики резервного копирования
После создания хранилища можно создать политику резервного копирования, чтобы защитить базы данных PostgreSQL. Вы также можете создать политику резервного копирования для баз данных PostgreSQL с помощью REST API.
Общие сведения о политике резервного копирования PostgreSQL
В то время как резервное копирование дисков предлагает несколько резервных копий в день, а резервное копирование BLOB-объектов — это непрерывная резервная копия без триггера, Служба архивации PostgreSQL обеспечивает защиту архива. Данные резервного копирования, которые сначала отправляются в хранилище, можно переместить на архивный уровень в соответствии с определенным правилом или жизненным циклом.
В этом контексте следующая иерархия поможет понять объект политики резервного копирования для PostgreSQL:
- Правило политики
- Правило резервного копирования
- Параметр резервного копирования
- Тип резервного копирования (полная резервная копия базы данных в данном случае)
- Начальное хранилище данных (где резервные копии изначально помещаются)
- Триггер (активация резервной копии)
- Расписание
- Критерии тегов по умолчанию (тег по умолчанию, который связывает все запланированные резервные копии с правилом хранения).
- Параметр резервного копирования
- Правило хранения по умолчанию (правило, применяемое ко всем резервным копиям по умолчанию в исходном хранилище данных)
- Правило резервного копирования
Объект политики определяет, какие типы резервных копий активируются, как они активируются (с помощью расписания), то, что они помечены, где они находятся (хранилище данных) и жизненный цикл их данных в хранилище данных.
Объект PowerShell по умолчанию для PostgreSQL говорит, чтобы активировать полную резервную копию каждую неделю. Резервные копии достигают хранилища, где они хранятся в течение трех месяцев.
Если вы хотите добавить уровень архива в политику, необходимо решить, когда данные будут перемещены из хранилища в архив, как долго данные будут оставаться в архиве, и какие из запланированных резервных копий должны быть помечены как архивируемые. Необходимо добавить правило хранения, определяющее жизненный цикл данных резервных копий из хранилища сейфа в архивное хранилище данных. Правило хранения также определяет, как долго данные резервного копирования будут оставаться в архивном хранилище данных. Затем необходимо добавить тег, который помечает запланированные резервные копии как подходящие для архивирования.
Полученный объект PowerShell выглядит следующим образом:
- Правило политики
- Правило резервного копирования
- Параметр резервного копирования
- Тип резервного копирования (полная резервная копия базы данных в данном случае)
- Начальное хранилище данных (где резервные копии изначально помещаются)
- Триггер (активация резервной копии)
- Расписание
- Критерии тегов по умолчанию (тег по умолчанию, который связывает все запланированные резервные копии с правилом хранения)
- Новые критерии тегов для нового правила хранения с тем же именем
- Параметр резервного копирования
- Правило хранения по умолчанию (правило, применяемое ко всем резервным копиям по умолчанию в исходном хранилище данных)
- Новое правило хранения
- Жизненный цикл
- Исходное хранилище данных
- Период времени удаления в исходном хранилище данных
- Копирование в целевое хранилище данных
- Жизненный цикл
- Правило резервного копирования
Получение шаблона политики
Чтобы понять внутренние компоненты политики резервного копирования для резервной копии базы данных PostgreSQL, получите шаблон политики с помощью az dataprotection backup-policy get-default-policy-template
команды. Эта команда возвращает шаблон политики по умолчанию для типа источника данных. Используйте этот шаблон политики для создания новой политики.
az dataprotection backup-policy get-default-policy-template --datasource-type AzureDatabaseForPostgreSQL
{
"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"
}
]
}
Шаблон политики состоит из триггера (который решает, что активирует резервную копию) и жизненный цикл (который решает, когда следует удалять, копировать или перемещать резервную копию). В резервной копии базы данных PostgreSQL значение по умолчанию для триггера — это запланированный еженедельный триггер (одна резервная копия каждые семь дней). Каждая резервная копия сохраняется в течение трех месяцев.
Запланированный триггер
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2021-08-15T06:30:00+00:00/P1W"
],
"timeZone": "UTC"
}
Жизненный цикл по умолчанию для правила содержания под стражей
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P3M",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
Изменение шаблона политики
В Azure PowerShell можно использовать объекты в качестве промежуточных расположений для выполнения всех изменений. В Azure CLI необходимо использовать файлы, так как нет понятия об объектах. Каждая операция редактирования должна быть перенаправлена в новый файл, где содержимое считывается из входного файла и перенаправляется в выходной файл. Позже вы можете переименовать файл по мере необходимости при его использовании в скрипте.
Изменение расписания
Шаблон политики по умолчанию предлагает резервное копирование один раз в неделю. Вы можете изменить расписание резервного копирования, чтобы оно выполнялось несколько дней в неделю. Чтобы изменить расписание, используйте az dataprotection backup-policy trigger set
команду.
Следующий пример изменяет еженедельную резервную копию в воскресенье, среду и пятницу каждой недели. Массив дат расписания упоминает даты и дни недели для этих дат принимаются в качестве дней недели. Кроме того, необходимо указать, что эти расписания должны повторяться каждую неделю. Таким образом, интервал расписания - 1
, а тип интервала - Weekly
.
az dataprotection backup-policy trigger create-schedule --interval-type Weekly --interval-count 1 --schedule-days 2021-08-15T22:00:00 2021-08-18T22:00:00 2021-08-20T22:00:00
[
"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"
]
az dataprotection backup-policy trigger set --policy .\OSSPolicy.json --schedule 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 > EditedOSSPolicy.json
Добавление нового правила хранения
Если вы хотите добавить защиту архива, необходимо изменить шаблон политики.
Шаблон по умолчанию имеет жизненный цикл для исходного хранилища данных в соответствии с правилом хранения по умолчанию. В этом сценарии правило предписывает удалять резервные копии данных через три месяца. Необходимо добавить новое правило хранения, определяющее, когда данные перемещаются в архивное хранилище данных. То есть данные резервного копирования сначала копируются в архивное хранилище данных, а затем удаляются в откатном хранилище.
Кроме того, правило должно определить, как долго хранить данные в архивном хранилище данных. Чтобы создать новые жизненные циклы, используйте az dataprotection backup-policy retention-rule create-lifecycle
команду. Чтобы связать эти жизненные циклы с новыми или существующими правилами az dataprotection backup-policy retention-rule set
, используйте команду.
В следующем примере создается новое правило хранения с именем Monthly
. В этом правиле первая успешная резервная копия каждого месяца хранится в хранилище в течение шести месяцев, перемещается на архивный уровень и хранится на архивном уровне в течение 24 месяцев.
az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 6 --retention-duration-type Months --source-datastore VaultStore --target-datastore ArchiveStore --copy-option CopyOnExpiryOption > VaultToArchiveLifeCycle.JSON
az dataprotection backup-policy retention-rule create-lifecycle --retention-duration-count 24 --retention-duration-type Months -source-datastore ArchiveStore > OnArchiveLifeCycle.JSON
az dataprotection backup-policy retention-rule set --lifecycles .\VaultToArchiveLifeCycle.JSON .\OnArchiveLifeCycle.JSON --name Monthly --policy .\EditedOSSPolicy.JSON > AddedRetentionRulePolicy.JSON
Добавление тега и соответствующих критериев
После создания правила хранения необходимо создать соответствующий тег в Trigger
свойстве политики резервного копирования. Чтобы создать новые критерии тегов, используйте команду az dataprotection backup-policy tag create-absolute-criteria
. Чтобы обновить существующий тег или создать новый тег, используйте az dataprotection backup-policy tag set
команду.
В следующем примере создается новый тег вместе с критерием, которым является первая успешная копия резервной копии месяца. Имя этого тега совпадает с именем правила хранения, которое здесь нужно применить.
В этом примере критерии тега называются Monthly
:
az dataprotection backup-policy tag create-absolute-criteria --absolute-criteria FirstOfMonth > tagCriteria.JSON
az dataprotection backup-policy tag set --criteria .\tagCriteria.JSON --name Monthly --policy .\AddedRetentionRulePolicy.JSON > AddedRetentionRuleAndTag.JSON
Если расписание включает несколько резервных копий в неделю (воскресенье, среда и четверг, как указано в предыдущем примере), и вы хотите архивировать резервные копии в воскресенье и пятницу, можно изменить критерии тегов с помощью команды az dataprotection backup-policy tag create-generic-criteria
.
az dataprotection backup-policy tag create-generic-criteria --days-of-week Sunday Friday > tagCriteria.JSON
az dataprotection backup-policy tag set --criteria .\tagCriteria.JSON --name Monthly --policy .\AddedRetentionRulePolicy.JSON > AddedRetentionRuleAndTag.JSON
Создание политики резервного копирования PostgreSQL
После изменения шаблона в соответствии с требованиями используйте az dataprotection backup-policy create
команду для создания политики с помощью измененного шаблона:
az dataprotection backup-policy create --backup-policy-name FinalOSSPolicy --policy AddedRetentionRuleAndTag.JSON --resource-group testBkpVaultRG --vault-name TestBkpVault
Настроить резервное копирование
После создания хранилища и политики необходимо рассмотреть три критически важные точки для резервного копирования базы данных PostgreSQL в Базе данных Azure для PostgreSQL.
Понимание ключевых сущностей
База данных PostgreSQL для резервного копирования
Получите идентификатор Resource Manager базы данных PostgreSQL для его резервирования. Этот идентификатор служит идентификатором базы данных. В следующем примере используется база данных с именем empdb11
под сервером testposgresql
PostgreSQL, которая присутствует в группе ossrg
ресурсов в другой подписке. В примере используется Bash.
ossId="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/servers/archive-postgresql-ccy/databases/empdb11"
Хранилище ключей
Служба Azure Backup не хранит имя пользователя и пароль для подключения к базе данных PostgreSQL. Вместо этого администратор резервного копирования загружает ключи в хранилище ключей. Затем служба Azure Backup обращается к хранилищу ключей, считывает ключи и обращается к базе данных.
В следующем примере используется Bash. Обратите внимание на секретный идентификатор соответствующего ключа.
keyURI="https://testkeyvaulteus.vault.azure.net/secrets/ossdbkey"
Хранилище резервных копий
Хранилище резервных копий должно подключиться к серверу PostgreSQL, а затем получить доступ к базе данных с помощью ключей, находящихся в хранилище ключей. Таким образом, хранилище резервных копий требует доступа к серверу PostgreSQL и хранилищу ключей. Доступ предоставляется управляемому удостоверению хранилища резервных копий.
Ознакомьтесь с разрешениями, которые необходимо предоставить управляемому удостоверению хранилища резервных копий на сервере PostgreSQL и хранилищу ключей, содержащему ключи для базы данных.
Подготовка запроса
После установки всех соответствующих разрешений выполните настройку резервной копии двумя шагами:
- Подготовьте запрос с помощью соответствующего хранилища, политики и базы данных PostgreSQL в команде
az dataprotection backup-instance initialize
. - Отправьте запрос на резервное копирование базы данных с помощью
az dataprotection backup-instance create
команды.
az dataprotection backup-instance initialize --datasource-id $ossId --datasource-type AzureDatabaseForPostgreSQL -l <vault-location> --policy-id <policy_arm_id> --secret-store-type AzureKeyVault --secret-store-uri $keyURI > OSSBkpInstance.JSON
az dataprotection backup-instance create --resource-group testBkpVaultRG --vault-name TestBkpVault TestBkpvault --backup-instance .\OSSBkpInstance.JSON
Выполнение резервного копирования по требованию
При активации резервной копии необходимо указать правило хранения. Чтобы просмотреть правила хранения в политике, просмотрите JSON-файл политики. В следующем примере есть два правила хранения с именами Default
и Monthly
. В этой статье используется Monthly
правило резервного копирования по запросу.
az dataprotection backup-policy show -g ossdemorg --vault-name ossdemovault-1 --subscription e3d2d341-4ddb-4c5d-9121-69b7e719485e --name osspol5
{
"id": "/subscriptions/e3d2d341-4ddb-4c5d-9121-69b7e719485e/resourceGroups/ossdemorg/providers/Microsoft.DataProtection/backupVaults/ossdemovault-1/backupPolicies/osspol5",
"name": "osspol5",
"properties": {
"datasourceTypes": [
"Microsoft.DBforPostgreSQL/servers/databases"
],
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Full",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupWeekly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-04T20:00:00+00:00/P1W",
"R/2020-04-01T20:00:00+00:00/P1W"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"criteria": [
{
"absoluteCriteria": [
"FirstOfMonth"
],
"daysOfMonth": null,
"daysOfTheWeek": null,
"monthsOfYear": null,
"objectType": "ScheduleBasedBackupCriteria",
"scheduleTimes": null,
"weeksOfTheMonth": null
}
],
"isDefault": false,
"tagInfo": {
"eTag": null,
"id": "Monthly_",
"tagName": "Monthly"
},
"taggingPriority": 15
},
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": false,
"lifecycles": [
{
"deleteAfter": {
"duration": "P10Y",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Monthly",
"objectType": "AzureRetentionRule"
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P1Y",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "VaultStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": []
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
},
"resourceGroup": "ossdemorg",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}
Чтобы активировать резервное копирование по запросу az dataprotection backup-instance adhoc-backup
, используйте команду:
az dataprotection backup-instance adhoc-backup --name "ossrg-empdb11" --rule-name "Monthly" --resource-group testBkpVaultRG --vault-name TestBkpVault
Отслеживание работ
Отслеживайте все задания с помощью az dataprotection job list
команды. Можно вывести список всех заданий и получить сведения о конкретном задании.
Вы также можете отслеживать Az.ResourceGraph
все задания во всех хранилищах резервных копий. Используйте команду az dataprotection job list-from-resourcegraph
для получения соответствующих заданий в резервных хранилищах:
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --status Completed
Связанный контент
- Восстановление баз данных PostgreSQL с помощью Azure CLI.
- Восстановление базы данных PostgreSQL с помощью портала Azure, Azure PowerShell и REST API.