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.
Neste artigo, você aprenderá a:
- Monitorar tarefas de backup e restauração
- Proteger novos bancos de dados adicionados a uma instância SQL
- Alterar a política
- Parar a proteção
- Retomar proteção
Se você usou Fazer backup de um banco de dados SQL no Azure usando a CLI para fazer backup do banco de dados SQL, você estará usando os seguintes recursos:
- um grupo de recursos denominado SQLResourceGroup
- Um cofre chamado SQLVault
- Um contêiner protegido denominado VMAppContainer;Compute;SQLResourceGroup;testSQLVM
- Banco de dados com backup/item denominado 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 que é submetida a backup usando o Backup do Azure. As seções a seguir descrevem cada uma das operações de gerenciamento.
Observação
Confira a Matriz de suporte ao backup de SQL para saber mais sobre as configurações e os cenários com suporte.
Monitorar tarefas 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 suspender um trabalho atualmente em execução ou aguardar 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 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 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 for criada com êxito, a saída do comando mostrará o JSON da política que você passou como um parâmetro ao executar o 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 quiser ter backups diferenciais somente aos sábados e mantê-los por 60 dias, faça as seguintes alterações na política:
- Atualize a contagem 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 SQL
O registro de uma instância do 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. 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. No entanto, essa lista exclui os bancos de dados nos quais o backup já foi configurado. Depois que o banco de dados a ser submetido a 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 aparecerá nessa lista e terá a seguinte aparência:
Name Protectable Item Type ParentName ServerName IsProtected
--------------------------- ---------------------- ------------ ----------- ------------
sqldatabase;mssqlserver;db1 SQLDataBase mssqlserver testSQLVM NotProtected
sqldatabase;mssqlserver;db2 SQLDataBase mssqlserver testSQLVM NotProtected
Interromper 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 os 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.
Interromper a proteção sem retenção de dados
Para interromper a proteção sem 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 \
--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
Quando você interrompe a proteção do banco de dados SQL com retenção de dados, pode continuar a proteção posteriormente. Se você não mantiver os dados de backup, não será possível 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.