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
- Saiba como fazer uma cópia de segurança de uma base de dados SQL em execução na VM do Azure com o portal do Azure.
- Saiba como gerir uma base de dados SQL com cópia de segurança em execução na VM do Azure com o portal do Azure.