Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описано, как выполнять резервное копирование баз данных SQL Server в виртуальных машинах Azure с помощью Azure Backup через REST API.
Примечание.
Дополнительные сведения о поддерживаемых конфигурациях и сценариях можно найти в матрице резервной копии SQL.
Необходимые компоненты
- Хранилище службы восстановления
- Политика настройки резервного копирования для баз данных SQL.
Дополнительные сведения о создании новых хранилищ и политик см. в учебниках REST API по созданию хранилища и созданию политики.
Воспользуйтесь следующими ресурсами:
- Хранилище Служб восстановления: SQLServer2012
- Политика: HourlyLogBackup
- Группа ресурсов: SQLServerSelfHost
Настройка резервного копирования для незащищенных баз данных SQL Server в виртуальной машине Azure
Поиск незащищенных баз данных SQL Server
Хранилищу необходимо найти в подписке все виртуальные машины Azure с базами данных SQL, для которых можно создать резервные копии в хранилище Служб восстановления. Чтобы получить подробные сведения, активируйте операцию обновления. Это асинхронная операция POST, которая предоставляет хранилищу актуальный список всех незащищенных баз данных SQL в текущей подписке для кэширования. После кэширования базы данных Службы восстановления получат доступ к ней для включения защиты.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{vaultResourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/{fabricName}/refreshContainers?api-version=2016-12-01&$filter={$filter}
Для URI POST используются параметры {subscriptionId}
, {vaultName}
, {vaultresourceGroupName}
и {fabricName}
. В следующем примере для различных параметров используются следующие значения:
-
{fabricName}
: Azure -
{vaultName}
: SQLServer2012 -
{vaultresourceGroupName}
: SQLServerSelfHost -
$filter
: backupManagementType eq "AzureWorkload"
Так как все необходимые параметры указаны в URI3, нет необходимости в отдельном тексте запроса.
POST https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/refreshContainers?api-version=2016-12-01&$filter=backupManagementType eq 'AzureWorkload'
Ответы на операцию обновления
Операция обновления — это асинхронная операция. Это означает, что такая операция создает другую операцию, которая должна отслеживаться отдельно.
Она возвращает два ответа: 202 (принято), когда создается другая операция, и 200 (ОК), когда эта операция завершается.
Примеры ответов на операцию обновления
После отправки запроса POST возвращается ответ 202 (принято).
HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
X-Content-Type-Options: nosniff
x-ms-request-id: a85ee4a2-56d7-4477-b29c-d140a8bb90fe
x-ms-client-request-id: 4653a4ed-ffbe-4492-ae7d-3e1ab03722af; 4653a4ed-ffbe-4492-ae7d-3e1ab03722af
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: a85ee4a2-56d7-4477-b29c-d140a8bb90fe
x-ms-routing-request-id: SOUTHINDIA:20180528T075517Z:a85ee4a2-56d7-4477-b29c-d140a8bb90fe
Cache-Control: no-cache
Date: Mon, 28 May 2018 07:55:16 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/operationResults/a60bfc5e-e237-4ead-be5c-b845e9566ea8?api-version=2016-12-01
X-Powered-By: ASP.NET
Отследите итоговую операцию, используя заголовок Location с помощью простой команды GET.
GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/operationResults/a60bfc5e-e237-4ead-be5c-b845e9566ea8?api-version=2016-12-01
После обнаружения всех баз данных SQL команда GET возвращает номер ответа 200 (содержимое отсутствует). Теперь хранилище может обнаружить любую виртуальную машину с базами данных SQL, для которых можно создать резервные копии в рамках подписки.
HTTP/1.1 204 NoContent
Pragma: no-cache
X-Content-Type-Options: nosniff
x-ms-request-id: 55ae46bb-0d61-4284-a408-bcfaa36af643
x-ms-client-request-id: b5ffa56f-a521-48a4-91b2-e3bc1e3f1110; b5ffa56f-a521-48a4-91b2-e3bc1e3f1110
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-reads: 14968
x-ms-correlation-request-id: 55ae46bb-0d61-4284-a408-bcfaa36af643
x-ms-routing-request-id: SOUTHINDIA:20180528T075607Z:55ae46bb-0d61-4284-a408-bcfaa36af643
Cache-Control: no-cache
Date: Mon, 28 May 2018 07:56:06 GMT
X-Powered-By: ASP.NET
Вывод списка виртуальных машин с базами данных SQL, для которых необходимо создать резервные копии в хранилище Служб восстановления
Чтобы убедиться, что кэширование завершено, получите список всех виртуальных машин в подписке с базами данных SQL, для которых можно создать резервные копии в хранилище Служб восстановления. Затем найдите в этом ответе нужную учетную запись хранения. Для этого используется операция GET ProtectableContainers.
GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers?api-version=2016-12-01&$filter=backupManagementType eq 'AzureWorkload'
Примечание.
URI GET имеет все необходимые параметры. Для этой операции текст запроса также не требуется.
Пример текста ответа:
{
"value": [
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;ad-primary-dc",
"name": "VMAppContainer;Compute;SQLServerPMDemo;ad-primary-dc",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectableContainers",
"properties": {
"friendlyName": "ad-primary-dc",
"backupManagementType": "AzureWorkload",
"protectableContainerType": "VMAppContainer",
"healthStatus": "Healthy",
"containerId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/ad-primary-dc"
}
},
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;ad-secondry-dc",
"name": "VMAppContainer;Compute;SQLServerPMDemo;ad-secondry-dc",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectableContainers",
"properties": {
"friendlyName": "ad-secondry-dc",
"backupManagementType": "AzureWorkload",
"protectableContainerType": "VMAppContainer",
"healthStatus": "Healthy",
"containerId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/ad-secondry-dc"
}
},
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
"name": "VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectableContainers",
"properties": {
"friendlyName": "sqlserver-0",
"backupManagementType": "AzureWorkload",
"protectableContainerType": "VMAppContainer",
"healthStatus": "Healthy",
"containerId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/sqlserver-0"
}
}
]
}
Поскольку мы можем найти виртуальные машины в теле ответа с их понятными именами, выполненная выше операция обновления оказалась успешной. Теперь хранилище Служб восстановления может успешно обнаружить виртуальные машины с незащищенными базами данных SQL в этой подписке.
Регистрация виртуальных машин в хранилище Служб восстановления
Чтобы служба Azure Backup могла взаимодействовать с базами данных SQL в виртуальной машине, необходимо зарегистрировать виртуальные машины в хранилище служб восстановления (используйте для идентификации контейнера виртуальной машины Azure значение в поле Имя). Чтобы получить тело HTTP-запроса из набора свойств результата списка защищаемых контейнеров, необходимо указать значения в запросе JSON.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}?api-version=2016-12-01
Задайте переменные для URI следующим образом:
-
{resourceGroupName}
- SQLServerSelfHost -
{fabricName}
- Лазурный -
{vaultName}
- SQLServer2012 -
{containerName}
: это атрибут имени в тексте ответа операции GET ProtectableContainers. В нашем примере атрибуту присвоено имя VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0.
Примечание.
Всегда берите атрибут имени из ответа и подставляйте его в этот запрос. Не указывайте значение непосредственно в коде и не используйте определенный формат имени контейнера. В противном случае вызов API будет завершаться ошибкой, если формат имени контейнера в будущем изменится.
PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0?api-version=2016-12-01
Текст запроса создания имеет следующий вид:
{
"properties": {
"backupManagementType": "AzureWorkload",
"friendlyName": "sqlserver-0",
"containerType": "VMAppContainer",
"sourceResourceId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
"workloadType": "SQLDataBase"
}
}
Полный список определений в тексте запроса и другие сведения см. в описании операции ProtectionContainers-Register.
Это асинхронная операция, которая возвращает два ответа: 202 (принято), когда операция принимается, и 200 (ОК), когда она завершается. Для отслеживания последнего состояния операции используйте заголовок location.
GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/operationResults/2a72d206-b4d8-4c59-89ef-ef3283132237?api-version=2016-12-01
Пример текста ответа после завершения операции:
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
"name": "VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers",
"properties": {
"sourceResourceId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/sqlserver-0",
"lastUpdatedTime": "2018-05-28T08:33:14.7304852Z",
"extendedInfo": {
"hostServerName": "sqlserver-0.shopkart.com",
"inquiryInfo": {
"status": "Success",
"errorDetail": {
"code": "Success",
"message": "",
"recommendations": [
""
]
},
"inquiryDetails": [
{
"type": "SQL",
"itemCount": 5,
"inquiryValidation": {
"status": "Success",
"errorDetail": {
"code": "Success",
"message": "",
"recommendations": [
""
]
}
}
}
]
}
},
"friendlyName": "sqlserver-0",
"backupManagementType": "AzureWorkload",
"registrationStatus": "Registered",
"healthStatus": "Healthy",
"containerType": "VMAppContainer",
"protectableObjectType": "VMAppContainer"
}
}
Проверить успешность регистрации можно по значению параметра registrationstatus в тексте ответа. В нашем случае он указывает для SQLServer2012 состояние "зарегистрировано", поэтому операция регистрации прошла успешно.
Запрос сведений обо всех незащищенных базах данных SQL в виртуальной машине
Запросить сведения о доступных для защиты элементах в учетной записи хранения можно с помощью операции Protection Containers-Inquire. Это асинхронная операция, и ее результаты нужно отслеживать с помощью заголовка location.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/inquire?api-version=2016-12-01$filter={$filter}
Задайте переменные для указанного выше URI следующим образом:
-
{resourceGroupName}
: SQLServerSelfHost -
{vaultName}
: SQLServer2012 -
{fabricName}
: Azure -
{containerName}
: Обратитесь к атрибуту имени в теле ответа операции GET ProtectableContainers. В нашем примере атрибуту присвоено имя VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0.
POST https://management.azure.com/subscriptions/e3d2d341-4ddb-4c5d-9121-69b7e719485e/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/inquire?api-version=2016-12-01$filter=workloadType EQ 'SQLDatabase'
При успешном выполнении запроса возвращается код состояния ОК.
HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
X-Content-Type-Options: nosniff
x-ms-request-id: 50295ae9-3d5b-48d1-8a6d-a0acb6d06b98
x-ms-client-request-id: 4174f98a-80b9-4747-9500-6f702ed83930; 4174f98a-80b9-4747-9500-6f702ed83930
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1197
x-ms-correlation-request-id: 50295ae9-3d5b-48d1-8a6d-a0acb6d06b98
x-ms-routing-request-id: SOUTHINDIA:20180528T084628Z:50295ae9-3d5b-48d1-8a6d-a0acb6d06b98
Cache-Control: no-cache
Date: Mon, 28 May 2018 08:46:28 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/operationResults/f0751ec2-445a-4d0e-a6a5-a19957459655?api-version=2016-12-01
X-Powered-By: ASP.NET
Выбор баз данных для резервного копирования
Получить список всех доступных для защиты элементов в подписке и найти нужную базу данных для резервного копирования можно с помощью операции Get backupprotectableItems.
GET https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupProtectableItems?api-version=2016-12-01&$filter={$filter}
Составьте URI следующим образом:
-
{resourceGroupName}
: SQLServerSelfHost -
{vaultName}
: SQLServer2012 -
{$filter}
: backupManagementType eq "AzureWorkload"
GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupProtectableItems?api-version=2016-12-01&$filter=backupManagementType eq 'AzureWorkload'
Пример ответа:
Status Code:200
{
"value": [
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;SQLServerSelfHost;SQLServersql2012/protectableItems/sqldatabase;mssqlserver;msdb",
"name": "sqldatabase;mssqlserver;msdb",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectableItems",
"properties": {
"parentName": "MSSQLSERVER",
"serverName": "SQLServersql2012",
"isAutoProtectable": false,
"subinquireditemcount": 0,
"subprotectableitemcount": 0,
"backupManagementType": "AzureWorkload",
"workloadType": "SQL",
"protectableItemType": "SQLDataBase",
"friendlyName": "msdb",
"protectionState": "NotProtected"
}
}
]
}
Ответ содержит список всех незащищенных баз данных, а также все сведения, необходимые для настройки резервного копирования Службами восстановления Azure. Сохраните имена баз данных для последующего использования.
Включение резервного копирования для базы данных
После того как нужная база данных была найдена по понятному имени,
- выберите политику для защиты.
- Список существующих политик в хранилище см.в списке API политик.
- Ссылаясь на имя политики, выберите соответствующую политику.
- Создание учебного руководства по правилам.
Включение защиты — это асинхронная операция PUT, которая создает защищенный элемент.
PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/{containerName};sqlserver-0/protectedItems/{protectedItemName}?api-version=2016-12-01
Задайте переменные containerName и protectedItemName, используя атрибут ИД в тексте ответа операции GET backupprotectableitems.
В нашем примере идентификатор общей папки, которую мы хотим защитить, следующий:
/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb
-
{containerName}
: VMAppContainer; Compute; SQLServerPMDemo; sqlserver-0 -
{protectedItemName}
: sqldatabase; mssqlserver; msdb
Создайте текст запроса:
Следующий текст запроса определяет свойства, необходимые для создания защищенного элемента.
{
"properties": {
"backupManagementType": "AzureWorkload",
"workloadType": "SQLDataBase",
"policyId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupPolicies/HourlyLogBackup"
},
"location": "westcentralus"
}
После отправки запроса PUT для создания или обновления защищенного элемента будет получен первоначальный ответ 202 (принято) с заголовком location.
Пример ответа
Создание защищенного элемента — это асинхронная операция, создающая другую операцию, которую необходимо отслеживать. Она возвращает два ответа: 202 (принято), когда создается другая операция, и 200 (ОК), когда эта операция завершается.
После отправки запроса PUT для создания или обновления защищенного элемента будет получен первоначальный ответ 202 (принято) с заголовком location.
HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
Azure-AsyncOperation: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationsStatus/b686a165-387f-461d-8579-c55338566338?api-version=2016-12-01
X-Content-Type-Options: nosniff
x-ms-request-id: ab6a8c6c-ab90-433a-8dc2-5194901d428d
x-ms-client-request-id: 7d03bcef-562a-4ddc-8086-a3f4981be915; 7d03bcef-562a-4ddc-8086-a3f4981be915
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: ab6a8c6c-ab90-433a-8dc2-5194901d428d
x-ms-routing-request-id: SOUTHINDIA:20180528T102112Z:ab6a8c6c-ab90-433a-8dc2-5194901d428d
Cache-Control: no-cache
Date: Mon, 28 May 2018 10:21:12 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationResults/b686a165-387f-461d-8579-c55338566338?api-version=2016-12-01
X-Powered-By: ASP.NET
Затем с помощью команды GET отследите итоговую операцию, используя заголовок Location или Azure-AsyncOperation.
GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationResults/b686a165-387f-461d-8579-c55338566338?api-version=2016-12-01
Завершенная операция возвращает код 200 (ОК) с содержимым защищенного элемента в тексте ответа.
Пример текста ответа:
{
"id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb",
"name": "SQLDataBase;mssqlserver;msdb",
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems",
"properties": {
"friendlyName": "msdb",
"serverName": "sqlserver-0.shopkart.com",
"parentName": "MSSQLSERVER",
"parentType": "AzureVmWorkloadSQLInstance",
"protectionStatus": "Healthy",
"protectionState": "IRPending",
"lastBackupStatus": "IRPending",
"lastBackupErrorDetail": {
"code": "Success",
"message": ""
},
"protectedItemDataSourceId": "17592741727863",
"protectedItemHealthStatus": "IRPending",
"extendedInfo": {
"recoveryPointCount": 0,
"policyState": "Consistent"
},
"protectedItemType": "AzureVmWorkloadSQLDatabase",
"backupManagementType": "AzureWorkload",
"workloadType": "SQLDataBase",
"containerName": "VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
"sourceResourceId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/VMAppContainer/sqlserver-0",
"policyId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupPolicies/HourlyLogBackup"
}
}
Это подтверждает, что защита базы данных включена и первая операция резервного копирования будет активирована в соответствии с расписанием политики.
Активация резервной копии по запросу для базы данных
После настройки базы данных для резервного копирования эта операция будет запущена в соответствии с расписанием политики. Вы можете дождаться первого запланированного резервного копирования или активировать эту операцию по требованию в любое время.
Активация резервного копирования по запросу — это операция POST.
Примечание.
Срок хранения этой резервной копии определяется типом выполняемой резервной копии по запросу.
- Полные резервные копии по запросу хранятся не менее 45 дней и не более 99 лет.
- Полное копирование по запросу принимает любые значения для хранения.
- Разностное копирование по запросу сохраняется согласно политике хранения запланированных разностных наборов.
- Журнал по запросу сохраняет резервные копии в соответствии с параметрами хранения запланированных журналов, заданных в политике.
POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/backup?api-version=2016-12-01
{containerName} и {protectedItemName} задаются, как указано выше для включения резервного копирования. В нашем примере мы получим следующее:
POST https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/Microsoft.RecoveryServices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/backup?api-version=2016-12-01
Создание текста запроса
Чтобы создать полную резервную копию по запросу, используйте следующий текст запроса.
{
"properties": {
"objectType": "AzureWorkloadBackupRequest",
"backupType": "Full"
}
}
Ответы на операцию резервного копирования по запросу
Активация резервного копирования по запросу — это асинхронная операция. Это означает, что такая операция создает другую операцию, которая должна отслеживаться отдельно.
Она возвращает два ответа: 202 (принято), когда создается другая операция, и 200 (ОК), когда эта операция завершается.
Примеры ответов на операцию резервного копирования по запросу
После отправки запроса POST для выполнения резервного копирования по запросу будет получен первоначальный ответ 202 (Принято) с заголовком Location или Azure-Async-Header.
HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
Azure-AsyncOperation: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationsStatus/cd2a3b13-d392-4e81-86ac-02ea91cc70b9?api-version=2016-12-01
X-Content-Type-Options: nosniff
x-ms-request-id: a691e2a9-8203-462d-a4da-d1badde22f83
x-ms-client-request-id: 6b033cf6-f875-4c03-8985-9add07ec2845; 6b033cf6-f875-4c03-8985-9add07ec2845
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: a691e2a9-8203-462d-a4da-d1badde22f83
x-ms-routing-request-id: SOUTHINDIA:20180528T114321Z:a691e2a9-8203-462d-a4da-d1badde22f83
Cache-Control: no-cache
Date: Mon, 28 May 2018 11:43:21 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationResults/cd2a3b13-d392-4e81-86ac-02ea91cc70b9?api-version=2016-12-01
X-Powered-By: ASP.NET
Затем с помощью команды GET отследите итоговую операцию, используя заголовок Location или Azure-AsyncOperation.
GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationsStatus/cd2a3b13-d392-4e81-86ac-02ea91cc70b9?api-version=2016-12-01
Завершенная операция возвращает код 200 (ОК) с идентификатором результата задания резервного копирования в тексте ответа.
Образец текста ответа
{
"id": "cd2a3b13-d392-4e81-86ac-02ea91cc70b9",
"name": "cd2a3b13-d392-4e81-86ac-02ea91cc70b9",
"status": "Succeeded",
"startTime": "2018-05-28T11:43:21.6516182Z",
"endTime": "2018-05-28T11:43:21.6516182Z",
"properties": {
"objectType": "OperationStatusJobExtendedInfo",
"jobId": "c22eca5d-0c1c-48a0-a40d-69bef708d92a"
}
}
Так как задание резервного копирования — это длительная операция, оно должно отслеживаться, как описано в документации по мониторингу заданий для REST API.
Следующие шаги
- Восстановление баз данных SQL с помощью REST API.
- Управление базами данных SQL Server на виртуальных машинах Azure с помощью портала Azure, Azure CLI, REST API.