Управление базами данных SQL на виртуальных машинах Azure с помощью Azure CLI
Azure CLI используется для создания ресурсов Azure и управления ими из командной строки или с помощью скриптов. В этой статье описывается, как с помощью Azure CLI управлять базой данных SQL на виртуальной машине Azure, для которой настроено резервное копирование. Эти действия можно также выполнить с помощью портала Azure.
В этой статье вы узнаете, как выполнять следующие задачи.
- выполнить мониторинг заданий резервного копирования и восстановления;
- обеспечить защиту новых баз данных, добавленных в экземпляр SQL;
- изменить политику;
- Остановить защиту
- Возобновить защиту
Если для настройки резервного копирования базы данных SQL вы следовали инструкциям из руководства по резервному копированию баз данных SQL в Azure c помощью CLI, вы используете следующие ресурсы:
- группу ресурсов с именем SQLResourceGroup;
- хранилище с именем SQLVault;
- защищенный контейнер с именем VMAppContainer;Compute;SQLResourceGroup;testSQLVM;
- резервная копия базы данных или элемента с именем sqldatabase;mssqlserver;master;
- ресурсы в регионе westus2.
Azure CLI упрощает процесс управления базой данных SQL на виртуальной машине Azure, для которое настроено резервное копирование с помощью Azure Backup. В следующих разделах описаны все операции управления.
Примечание
Дополнительные сведения о поддерживаемых конфигурациях и сценариях можно найти в матрице резервной копии SQL.
выполнить мониторинг заданий резервного копирования и восстановления;
Для наблюдения за завершенными или выполняющимися в данный момент заданиями (резервного копирования или восстановления) используйте команду az backup job list. CLI также позволяет приостановить выполняющееся задание или подождать, пока задание не завершится.
az backup job list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--output table
Результат выглядит так:
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
Изменение политики
Чтобы изменить политику, на которой основана конфигурации резервного копирования SQL, воспользуйтесь командой az backup policy set. Параметр name в этой команде ссылается на элемент архивации, политику которого нужно изменить. В нашем примере политика базы данных SQL sqldatabase;mssqlserver;master заменяется новой политикой newSQLPolicy. Вы можете создавать новые политики с помощью команды 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 \
Результат выглядит так:
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
Создание разностной резервной копии
Чтобы создать политику создания разностных резервных копий, воспользуйтесь командой az backup policy create со следующими параметрами:
- --backup-management-type: рабочая нагрузка Azure;
- --workload-type: SQL DataBase;
- --name: имя политики;
- --policy: файл JSON с соответствующими сведениями о расписании и хранении;
- --resource-group: группа ресурсов хранилища;
- --vault-name: имя хранилища.
Пример
az backup policy create --resource-group SQLResourceGroup --vault-name SQLVault --name SQLPolicy --backup-management-type AzureWorkload --policy SQLPolicy.json --workload-type SQLDataBase
Пример 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"
}
После успешного создания политики в выходных данных команды выводится код JSON политики, которую вы передали в качестве параметра при выполнении команды.
Вы можете изменить следующий раздел политики, чтобы указать требуемую периодичность резервного копирования и срок хранения для разностных резервных копий.
Пример:
{
"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
}
}
Пример:
Если требуется создавать разностные резервные копии только по субботам и хранить их в течение 60 дней, внесите в политику следующие изменения:
- Измените значение retentionDuration на 60 дней.
- Укажите для 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
}
}
Защита новых баз данных, добавляемых в экземпляр SQL
При регистрации экземпляра SQL в хранилище Служб восстановления автоматически обнаруживаются все базы данных в этом экземпляре.
Однако если вы добавили новые базы данных в экземпляр SQL позже, выполните команду az backup protectable-item initialize. Эта команда обнаруживает вновь добавленные базы данных.
az backup protectable-item initialize --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--workload-type SQLDataBase
После этого выполните командлет az backup protectable-item list, чтобы получить список всех баз данных, обнаруженных в экземпляре SQL. Но этот список не включает базы данных, для которых уже настроено резервное копирование. После обнаружения базы данных, для которой требуется резервное копирование, воспользуйтесь руководством Включение резервного копирования для базы данных SQL.
az backup protectable-item list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--workload-type SQLDataBase \
--protectable-item-type SQLDataBase \
--output table
Новая база данных, для которой вы решили включить резервное копирование, появится в списке в следующем формате:
Name Protectable Item Type ParentName ServerName IsProtected
--------------------------- ---------------------- ------------ ----------- ------------
sqldatabase;mssqlserver;db1 SQLDataBase mssqlserver testSQLVM NotProtected
sqldatabase;mssqlserver;db2 SQLDataBase mssqlserver testSQLVM NotProtected
Остановка защиты для базы данных
Вы можете остановить защиту базы данных SQL одним из следующих методов:
- можно остановить все будущие задания резервного копирования и удалить все точки восстановления;
- остановить все будущие задания резервного копирования, но сохранить точки восстановления без изменений.
Если вы решили сохранить точки восстановления, учитывайте следующие факторы:
- все точки восстановления навсегда остаются неизменными, и любая очистка прекращается одновременно с отключением защиты;
- вы будете оплачивать работу защищенного экземпляр и используемый объем хранилища;
- если вы удалите источник данных без остановки резервного копирования, новые операции резервного копирования будут завершаться сбоем.
Ниже подробно описаны процессы, позволяющие остановить защиту.
Отключите защиту с сохранением данных
Чтобы отключить защиту с сохранением данных, используйте команду 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
Результат выглядит так:
Name ResourceGroup
------------------------------------ ---------------
g0f15dae-7cac-4475-d833-f52c50e5b6c3 SQLResourceGroup
Чтобы проверить состояние этой операции, используйте команду az backup job show.
Отключение защиты без сохранения данных
Чтобы отключить защиту без сохранения данных, используйте команду 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
Результат выглядит так:
Name ResourceGroup
------------------------------------ ---------------
g0f15dae-7cac-4475-d833-f52c50e5b6c3 SQLResourceGroup
Чтобы проверить состояние этой операции, используйте команду az backup job show.
Возобновить защиту
Если вы отключите защиту для базы данных SQL с сохранением данных, можно будет возобновить защиту позже. Если вы не сохраните существующие данные, защиту возобновить не удастся.
Чтобы возобновить защиту, используйте команду 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
Результат выглядит так:
Name ResourceGroup
------------------------------------ ---------------
b2a7f108-1020-4529-870f-6c4c43e2bb9e SQLResourceGroup
Чтобы проверить состояние этой операции, используйте команду az backup job show.