Compartilhar via


Gerenciar bancos de dados SQL em uma VM do Azure usando a CLI do Azure

A CLI do Azure é usada para criar e gerenciar recursos do Azure por meio da linha de comando ou por meio de scripts. Este artigo descreve como gerenciar um banco de dados SQL com backup na VM do Azure usando a CLI do Azure. Você também pode executar essas ações usando o portal do Azure.

Observação

Se você tiver usado Backup de um banco de dados SQL no Azure usando a CLI para fazer backup do banco de dados SQL, você usará os seguintes recursos:

  • Um grupo de recursos denominado SQLResourceGroup
  • Um cofre chamado SQLVault
  • Contêiner protegido chamado VMAppContainer; Calcular; SQLResourceGroup; testSQLVM
  • Banco de dados/item de backup chamado sqldatabase; mssqlserver; master
  • Recursos na região westus2

A CLI do Azure facilita o processo de gerenciamento de um banco de dados SQL em execução em uma VM do Azure com backup usando o Backup do Azure. As seções a seguir descrevem cada uma das operações de gerenciamento.

Saiba mais sobre as configurações e cenários com suporte para o backup do SQL.

Monitorar trabalhos de backup e restauração

Use o comando az backup job list para monitorar trabalhos concluídos ou em execução no momento (backup ou restauração). A CLI também permite que você suspenda um trabalho em execução no momento ou aguarde até que um trabalho seja concluído.

az backup job list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --output table

A saída é exibida como:

Name                                  Operation              Status      Item Name       			Start Time UTC
------------------------------------  ---------------        ---------   ----------      			-------------------  
e0f15dae-7cac-4475-a833-f52c50e5b6c3  ConfigureBackup        Completed   master [testSQLVM]         2019-12-03T03:09:210831+00:00  
ccdb4dce-8b15-47c5-8c46-b0985352238f  Backup (Full)          Completed   master [testSQLVM]   		2019-12-01T10:30:58.867489+00:00
4980af91-1090-49a6-ab96-13bc905a5282  Backup (Differential)  Completed   master [testSQLVM]			2019-12-01T10:36:00.563909+00:00
F7c68818-039f-4a0f-8d73-e0747e68a813  Restore (Log)          Completed   master [testSQLVM]			2019-12-03T05:44:51.081607+00:00

Alterar uma política

Para alterar a política subjacente à configuração de backup do SQL, use o comando az backup policy set . O parâmetro de nome neste comando refere-se ao item de backup cuja política você deseja alterar. Aqui, substitua a política do banco de dados SQL sqldatabase;mssqlserver;master por uma nova política newSQLPolicy. Você pode criar novas políticas usando o comando az backup policy create .

az backup item set-policy --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --policy-name newSQLPolicy \
    --name sqldatabase;mssqlserver;master \

A saída é exibida como:

Name                                  Operation        Status     Item Name    Backup Management Type    Start Time UTC                    Duration
------------------------------------  ---------------  ---------  -----------  ------------------------  --------------------------------  --------------
ba350996-99ea-46b1-aae2-e2096c1e28cd  ConfigureBackup  Completed  master       AzureWorkload             2022-06-22T08:24:03.958001+00:00  0:01:12.435765

Criar uma política de backup diferencial

Para criar uma política de backup diferencial, use o comando az backup policy create com os seguintes parâmetros:

  • --backup-management-type: Carga de trabalho do Azure.
  • --workload-type: Banco de Dados SQL.
  • --name: nome da política.
  • --policy: arquivo JSON com detalhes apropriados para agendamento e retenção.
  • --resource-group: grupo de recursos do cofre.
  • --vault-name: nome do cofre/

Exemplo:

az backup policy create --resource-group SQLResourceGroup --vault-name SQLVault --name SQLPolicy --backup-management-type AzureWorkload --policy SQLPolicy.json --workload-type SQLDataBase

JSON de exemplo (sqlpolicy.json):

  "eTag": null,
  "id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupPolicies/SQLPolicy",
  "___location": null,
  "name": "sqlpolicy",
  "properties": {
    "backupManagementType": "AzureWorkload",
    "workLoadType": "SQLDataBase",
    "settings": {
      "timeZone": "UTC",
      "issqlcompression": false,
      "isCompression": false
    },
    "subProtectionPolicy": [
      {
        "policyType": "Full",
        "schedulePolicy": {
          "schedulePolicyType": "SimpleSchedulePolicy",
          "scheduleRunFrequency": "Weekly",
          "scheduleRunDays": [
            "Sunday"
          ],
          "scheduleRunTimes": [
            "2022-06-13T19:30:00Z"
          ],
          "scheduleWeeklyFrequency": 0
        },
        "retentionPolicy": {
          "retentionPolicyType": "LongTermRetentionPolicy",
          "weeklySchedule": {
            "daysOfTheWeek": [
              "Sunday"
            ],
            "retentionTimes": [
              "2022-06-13T19:30:00Z"
            ],
            "retentionDuration": {
              "count": 104,
              "durationType": "Weeks"
            }
          },
          "monthlySchedule": {
            "retentionScheduleFormatType": "Weekly",
            "retentionScheduleWeekly": {
              "daysOfTheWeek": [
                "Sunday"
              ],
              "weeksOfTheMonth": [
                "First"
              ]
            },
            "retentionTimes": [
              "2022-06-13T19:30:00Z"
            ],
            "retentionDuration": {
              "count": 60,
              "durationType": "Months"
            }
          },
          "yearlySchedule": {
            "retentionScheduleFormatType": "Weekly",
            "monthsOfYear": [
              "January"
            ],
            "retentionScheduleWeekly": {
              "daysOfTheWeek": [
                "Sunday"
              ],
              "weeksOfTheMonth": [
                "First"
              ]
            },
            "retentionTimes": [
              "2022-06-13T19:30:00Z"
            ],
            "retentionDuration": {
              "count": 10,
              "durationType": "Years"
            }
          }
        }
      },
      {
        "policyType": "Differential",
        "schedulePolicy": {
          "schedulePolicyType": "SimpleSchedulePolicy",
          "scheduleRunFrequency": "Weekly",
          "scheduleRunDays": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday"
          ],
          "scheduleRunTimes": [
            "2022-06-13T02:00:00Z"
          ],
          "scheduleWeeklyFrequency": 0
        },
        "retentionPolicy": {
          "retentionPolicyType": "SimpleRetentionPolicy",
          "retentionDuration": {
            "count": 30,
            "durationType": "Days"
          }
        }
      },
      {
        "policyType": "Log",
        "schedulePolicy": {
          "schedulePolicyType": "LogSchedulePolicy",
          "scheduleFrequencyInMins": 120
        },
        "retentionPolicy": {
          "retentionPolicyType": "SimpleRetentionPolicy",
          "retentionDuration": {
            "count": 15,
            "durationType": "Days"
          }
        }
      }
    ],
    "protectedItemsCount": 0
  },
  "resourceGroup": "SQLResourceGroup",
  "tags": null,
  "type": "Microsoft.RecoveryServices/vaults/backupPolicies"
} 

Depois que a política é criada com êxito, a saída do comando mostra o JSON da política que você passou como um parâmetro durante a execução do comando.

Você pode modificar a seção a seguir da política para especificar a frequência de backup e a retenção necessárias para backups diferenciais.

Por exemplo:

{
  "policyType": "Differential",
  "retentionPolicy": {
    "retentionDuration": {
      "count": 30,
      "durationType": "Days"
    },
    "retentionPolicyType": "SimpleRetentionPolicy"
  },
  "schedulePolicy": {
    "schedulePolicyType": "SimpleSchedulePolicy",
    "scheduleRunDays": [
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday",
      "Saturday"
    ],
    "scheduleRunFrequency": "Weekly",
    "scheduleRunTimes": [
      "2017-03-07T02:00:00+00:00"
    ],
    "scheduleWeeklyFrequency": 0
  }
}

Exemplo:

Se você quiser ter backups diferenciais somente no sábado e mantê-los por 60 dias, faça as seguintes alterações na política:

  • Atualizar a contagem de retentionDuration para 60 dias.
  • Especifique somente sábado como ScheduleRunDays.
 {
  "policyType": "Differential",
  "retentionPolicy": {
    "retentionDuration": {
      "count": 60,
      "durationType": "Days"
    },
    "retentionPolicyType": "SimpleRetentionPolicy"
  },
  "schedulePolicy": {
    "schedulePolicyType": "SimpleSchedulePolicy",
    "scheduleRunDays": [
      "Saturday"
    ],
    "scheduleRunFrequency": "Weekly",
    "scheduleRunTimes": [
      "2017-03-07T02:00:00+00:00"
    ],
    "scheduleWeeklyFrequency": 0
  }
}

Proteger os novos bancos de dados adicionados a uma instância do SQL

O registro de uma instância SQL com um cofre do Azure Recovery Services automaticamente descobre todos os bancos de dados presentes na instância.

No entanto, se você tiver adicionado novos bancos de dados à instância SQL posteriormente, use o comando az backup protectable-item initialize. Esse comando descobre os novos bancos de dados adicionados.

az backup protectable-item initialize --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --workload-type SQLDataBase

Em seguida, use o cmdlet az backup protectable-item list para listar todos os bancos de dados que foram descobertos em sua instância SQL. Essa lista, no entanto, exclui os bancos de dados nos quais o backup já foi configurado. Assim que o banco de dados a ser salvo for descoberto, consulte Habilitar backup no banco de dados SQL.

az backup protectable-item list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --workload-type SQLDataBase \
	--protectable-item-type SQLDataBase \
    --output table

O novo banco de dados que você deseja fazer backup aparece nesta lista, que aparece como:

Name                            Protectable Item Type    ParentName    ServerName    IsProtected
---------------------------     ----------------------   ------------  -----------   ------------
sqldatabase;mssqlserver;db1     SQLDataBase              mssqlserver   testSQLVM	 NotProtected  
sqldatabase;mssqlserver;db2     SQLDataBase              mssqlserver   testSQLVM	 NotProtected

Parar a proteção para um banco de dados SQL

Você pode parar de proteger um banco de dados SQL nos seguintes processos:

  • Interromper todos os trabalhos de backup futuros e excluir todos os pontos de recuperação.
  • Interromper todos os trabalhos de backup futuros e deixar os pontos de recuperação intactos.

Se você optar por deixar pontos de recuperação, tenha em mente estes detalhes:

  • Todos os pontos de recuperação permanecerão intactos para sempre, e toda a remoção será interrompida ao parar a proteção com os dados de retenção.
  • Você será cobrado pela instância protegida e pelo armazenamento consumido.
  • Se você excluir uma fonte de dados sem interromper os backups, os novos backups falharão.

Os processos para interromper a proteção são detalhados abaixo.

Interrompa a proteção com retenção de dados

Para interromper a proteção com dados de retenção, use o comando az backup protection disable.

az backup protection disable --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --workload-type SQLDataBase \
    --output table

A saída é exibida como:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

Para verificar o status dessa operação, use o comando az backup job show .

Parar a proteção sem reter dados

Para interromper a proteção sem reter dados, use o comando az backup protection disable .

az backup protection disable --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --workload-type SQLDataBase \
    --delete-backup-data true \
    --output table

A saída é exibida como:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

Para verificar o status dessa operação, use o comando az backup job show .

Retomar proteção

Ao interromper a proteção para o banco de dados SQL mantendo os dados, você poderá retomar a proteção mais tarde. Se você não reter os dados de backup, não poderá retomar a proteção.

Para retomar a proteção, use o comando az backup protection resume .

az backup protection resume --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --policy-name SQLPolicy \
    --output table

A saída é exibida como:

Name                                  ResourceGroup
------------------------------------  ---------------  
b2a7f108-1020-4529-870f-6c4c43e2bb9e  SQLResourceGroup

Para verificar o status dessa operação, use o comando az backup job show .

Próximas etapas