Partilhar via


Gerir bases de dados SQL numa VM do Azure com a CLI do Azure

A CLI do Azure é utilizada para criar e gerir recursos do Azure a partir da Linha de Comandos ou através de scripts. Este artigo descreve como gerir uma base de dados SQL com cópia de segurança na VM do Azure com a CLI do Azure. Também pode efetuar estas ações com a portal do Azure.

Neste artigo, vai aprender a:

  • Monitorizar tarefas de cópia de segurança e restauro
  • Proteger novas bases de dados adicionadas a uma instância do SQL
  • Alterar a política
  • Parar proteção
  • Retomar a proteção

Se utilizou a opção Fazer cópia de segurança de uma base de dados SQL no Azure com a CLI para fazer uma cópia de segurança da base de dados SQL, está a utilizar os seguintes recursos:

  • Um grupo de recursos com o nome SQLResourceGroup
  • Um cofre com o nome SQLVault
  • Contentor protegido com o nome VMAppContainer; Computação; SQLResourceGroup;testSQLVM
  • Base de dados/item com cópia de segurança com o nome sqldatabase;mssqlserver;master
  • Recursos na região westus2

A CLI do Azure facilita o processo de gestão de uma base de dados SQL em execução numa VM do Azure que tem uma cópia de segurança com Azure Backup. As secções seguintes descrevem cada uma das operações de gestão.

Nota

Veja a matriz de suporte da cópia de segurança do SQL para saber mais sobre as configurações e cenários suportados.

Monitorizar tarefas de cópia de segurança e restauro

Utilize o comando az backup job list para monitorizar tarefas concluídas ou atualmente em execução (cópia de segurança ou restauro). A CLI também lhe permite suspender uma tarefa atualmente em execução ou aguardar até que uma tarefa seja concluída.

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

O resultado é apresentado 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 da cópia de segurança do SQL, utilize o comando az backup policy set . O parâmetro name neste comando refere-se ao item de cópia de segurança cuja política pretende alterar. Aqui, substitua a política da base de dados SQL sqldatabase;mssqlserver;master por uma nova política newSQLPolicy. Pode criar novas políticas com 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 \

O resultado é apresentado 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 cópia de segurança diferencial

Para criar uma política de cópia de segurança diferencial, utilize o comando az backup policy create com os seguintes parâmetros:

  • --backup-management-type: Carga de Trabalho do Azure.
  • --workload-type: SQL DataBase.
  • --name: nome da política.
  • --policy: ficheiro JSON com detalhes adequados 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"
} 

Assim que a política for criada com êxito, a saída do comando mostra o JSON da política que transmitiu como parâmetro durante a execução do comando.

Pode modificar a secção seguinte da política para especificar a frequência e a retenção de cópias de segurança necessárias para cópias de segurança 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 quiser ter cópias de segurança diferenciais apenas no sábado e mantê-las durante 60 dias, efetue as seguintes alterações na política:

  • Retenção da atualização Contagem 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 as novas bases de dados adicionadas a uma instância do SQL

Registar uma instância do SQL num cofre dos Serviços de Recuperação deteta automaticamente todas as bases de dados nesta instância.

No entanto, se tiver adicionado novas bases de dados à instância do SQL mais tarde, utilize o comando az backup protectable-item initialize . Este comando deteta as novas bases de dados adicionadas.

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

Em seguida, utilize o cmdlet az backup protectable-item list para listar todas as bases de dados que foram detetadas na instância do SQL. No entanto, esta lista exclui as bases de dados nas quais a cópia de segurança já foi configurada. Depois de detetar a cópia de segurança da base de dados, veja Ativar a cópia de segurança na base de dados SQL.

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

A nova base de dados que pretende criar uma cópia de segurança é apresentada 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 de uma base de dados SQL

Pode parar de proteger uma base de dados SQL nos seguintes processos:

  • Pare todas as tarefas de cópia de segurança futuras e elimine todos os pontos de recuperação.
  • Pare todas as tarefas de cópia de segurança futuras e deixe os pontos de recuperação intactos.

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

  • Todos os pontos de recuperação permanecem intactos para sempre e todas as eliminações param na proteção de paragem com dados de retenção.
  • Ser-lhe-á cobrada a instância protegida e o armazenamento consumido.
  • Se eliminar uma origem de dados sem parar as cópias de segurança, as novas cópias de segurança falharão.

Os processos para parar a proteção estão detalhados abaixo.

Parar a proteção com reter dados

Para parar a proteção com a retenção de dados, utilize 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

O resultado é apresentado como:

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

Para verificar o estado desta operação, utilize o comando az backup job show .

Parar a proteção sem reter dados

Para parar a proteção sem reter dados, utilize 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

O resultado é apresentado como:

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

Para verificar o estado desta operação, utilize o comando az backup job show .

Retomar a proteção

Quando parar a proteção da base de dados SQL com dados retidos, pode retomar a proteção mais tarde. Se não reter os dados da cópia de segurança, não poderá retomar a proteção.

Para retomar a proteção, utilize 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

O resultado é apresentado como:

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

Para verificar o estado desta operação, utilize o comando az backup job show .

Passos seguintes