Резервное копирование базы данных Azure для PostgreSQL — гибкий сервер с помощью Azure CLI

В этой статье описывается резервное копирование базы данных Azure для PostgreSQL — гибкий сервер с помощью Azure CLI.

Предпосылки

Перед резервной копией базы данных Azure для PostgreSQL — гибкий сервер просмотрите поддерживаемые сценарии и ограничения для резервного копирования базы данных Azure для PostgreSQL — гибкие серверы.

Создание хранилища резервных копий для PostgreSQL — гибкое резервное копирование сервера

Хранилище резервных копий — это объект хранения в Azure. При этом хранятся данные резервного копирования для новых рабочих нагрузок, поддерживаемых Azure Backup. Например, Azure Database для 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
  "identity": {
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "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 — гибкий сервер

Перед настройкой защиты базы данных убедитесь, что вы создадите политику резервного копирования. После создания хранилища и политики защитите базу данных Azure для PostgreSQL — гибкий сервер, выполнив следующие действия:

  • Получите идентификатор ARM для гибкого сервера PostgreSQL, который нужно защитить
  • Предоставление доступа к хранилищу резервных копий
  • Подготовка запроса конфигурации резервного копирования

Получите ARM ID для сервера PostgreSQL Flexible, чтобы его защитить.

Получите идентификатор Azure Resource Manager (ARM ID) гибкого сервера PostgreSQL, который нужно защитить. Этот идентификатор служит идентификатором базы данных. Давайте рассмотрим пример базы данных с именем empdb11, находящейся на гибком сервере PostgreSQL под именем testposgresql, который присутствует в группе ресурсов ossrg в другой подписке.

В следующем примере используется bash.

ossId="/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/ossrg/providers/Microsoft.DBforPostgreSQL/flexibleServers/archive-postgresql-ccy/databases/empdb11"

Предоставление доступа к хранилищу резервных копий

Хранилищу резервных копий необходимо подключиться к серверу PostgreSQL – Flexible Server, а затем получить доступ к базе данных с помощью ключей из хранилища. Поэтому для этого требуется доступ к гибкому серверу PostgreSQL и хранилищу ключей. Предоставьте доступ управляемой идентичности сервиса (MSI) хранилища резервных копий.

Проверьте разрешения, необходимые для управляемой служебной идентичности (MSI) хранилища резервных копий на гибком сервере PostgreSQL и в хранилище ключей Azure, в котором хранятся ключи для базы данных.

Подготовка запроса конфигурации резервного копирования

После установки всех соответствующих разрешений настройте резервную копию, выполнив следующие команды:

  1. Подготовьте соответствующий запрос с помощью соответствующего хранилища, политики, PostgreSQL — гибкой базы данных сервера с помощью az dataprotection backup-instance initialize команды.

    az dataprotection backup-instance initialize --datasource-id $ossId --datasource-type AzureDatabaseForPostgreSQLFlexibleServer -l <vault-location> --policy-id <policy_arm_id>  --secret-store-type AzureKeyVault --secret-store-uri $keyURI > OSSBkpInstance.JSON
    
  2. Отправьте запрос для защиты базы данных с помощью az dataprotection backup-instance create команды.

    az dataprotection backup-instance create --resource-group testBkpVaultRG --vault-name TestBkpVault TestBkpvault --backup-instance .\OSSBkpInstance.JSON
    

Выполнение резервного копирования по запросу для PostgreSQL — гибкий сервер

Укажите правило хранения во время активации резервного копирования. Чтобы просмотреть правила хранения в политике, перейдите в JSON-файл политики для правил хранения. В следующем примере существует два правила хранения с именами Default и Monthly. Давайте будем использовать ежемесячное правило для резервного копирования по запросу.

az dataprotection backup-policy show  -g ossdemorg --vault-name ossdemovault-1 --subscription e3d2d341-4ddb-4c5d-9121-69b7e719485e --name osspol5

{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e-69b7e719485e/resourceGroups/ossdemorg/providers/Microsoft.DataProtection/backupVaults/ossdemovault-1/backupPolicies/osspol5",
  "name": "osspol5",
  "properties": {
    "datasourceTypes": [
      " Microsoft.DBforPostgreSQL/flexibleServers/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

Отслеживание заданий для PostgreSQL — гибкое резервное копирование сервера

Отслеживайте все задания с помощью az dataprotection job list команды. Можно вывести список всех заданий и получить сведения о конкретном задании.

Для отслеживания всех заданий во всех хранилищах Backup можно также использовать Az.ResourceGraph. Используйте команду az dataprotection job list-from-resourcegraph для получения соответствующих заданий, распределенных по хранилищам резервных копий.

az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQLFlexibleServer --status Completed

Следующий шаг