Partilhar 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 a partir da Linha de Comando ou por meio de scripts. Este artigo descreve como gerenciar um banco de dados SQL de 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 tiver utilizado Fazer backup de um banco de dados SQL no Azure usando a CLI para fazer backup do banco de dados SQL, então estará a utilizar os seguintes recursos:

  • Um grupo de recursos chamado SQLResourceGroup
  • Um cofre chamado SQLVault
  • Contêiner protegido chamado VMAppContainer;Compute;SQLResourceGroup;testSQLVM
  • Banco de dados/item de backup chamado sqldatabase; mssqlserver; mestre
  • 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 cujo backup é feito 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 suportados para o backup SQL.

Monitorar tarefas de backup e restauração

Use o comando az backup job list para monitorar trabalhos concluídos ou em execução (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 aparece 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 name 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 com 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 aparece 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: Base 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 vault.
  • --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

Exemplo de JSON (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 de política que você passou como parâmetro durante a execução do comando.

Você pode modificar a seção a seguir da política para especificar a frequência e a retenção de backup 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 apenas no sábado e retê-los por 60 dias, faça as seguintes alterações na política:

  • Atualize a duração de retenção para 60 dias.
  • Especifique apenas 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 SQL

O registro de uma instância SQL com um cofre dos Serviços de Recuperação descobre automaticamente todos os bancos de dados nessa instância.

No entanto, se você tiver adicionado novos bancos de dados à instância SQL posteriormente, use o comando az backup protectable-item initialize . Este 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 todas as bases de dados que foram descobertas na sua instância SQL. Essa lista, no entanto, exclui os bancos de dados nos quais o backup já foi configurado. Depois que o banco de dados do qual será feito backup 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 do qual você deseja fazer backup é exibido 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:

  • Pare todos os trabalhos de backup futuros e exclua todos os pontos de recuperação.
  • Pare todos os trabalhos de backup futuros e deixe os pontos de recuperação intactos.

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

  • Todos os pontos de recuperação permanecem intactos para sempre e todas as podas param na proteção de parada com retenção de dados.
  • 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.

Parar a proteção retendo dados

Para interromper a proteção com a retenção de 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 \
    --output table

A saída aparece como:

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

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

Pare 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 aparece como:

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

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

Proteção de retomada

Quando se interrompe a proteção do banco de dados SQL mantendo os dados, pode retomar a proteção mais tarde. Se você não retiver 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 aparece como:

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

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

Próximos passos