Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób tworzenia kopii zapasowych baz danych programu SQL Server na maszynach wirtualnych platformy Azure przy użyciu usługi Azure Backup za pośrednictwem interfejsu API REST.
Uwaga / Notatka
Aby dowiedzieć się więcej na temat obsługiwanych konfiguracji i scenariuszy, zobacz macierz wsparcia kopii zapasowych SQL.
Wymagania wstępne
- Skarbiec usług odzyskiwania danych
- Zasady konfigurowania kopii zapasowej baz danych SQL.
Aby uzyskać więcej informacji na temat tworzenia nowych magazynów i zasad, zobacz samouczki interfejsu API REST tworzenie magazynu i tworzenie zasad.
Użyj następujących zasobów:
- Magazyn usługi Recovery Services: SQLServer2012
- Zasady: HourlyLogBackup
- Grupa zasobów: SQLServerSelfHost
Konfigurowanie kopii zapasowej dla niechronionych baz danych programu SQL Server na maszynie wirtualnej platformy Azure
Odnajdywanie niechronionych baz danych programu SQL Server
Magazyn musi odnajdywać wszystkie maszyny wirtualne platformy Azure w subskrypcji, które mają bazy danych SQL, aby można było utworzyć ich kopię zapasową w magazynie usługi Recovery Services. Aby pobrać szczegóły, uruchom operację odświeżania. Jest to asynchroniczna operacja POST, która zapewnia, że magazyn otrzymuje najnowszą listę wszystkich niechronionych baz danych SQL w bieżącej subskrypcji i buforuje je. Gdy baza danych jest buforowana, usługi odzyskiwania mogą uzyskiwać dostęp do bazy danych i chronić ją.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{vaultResourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/{fabricName}/refreshContainers?api-version=2016-12-01&$filter={$filter}
POST URI ma parametry {subscriptionId}
, {vaultName}
, {vaultresourceGroupName}
i {fabricName}
. W poniższym przykładzie wartości różnych parametrów są następujące:
-
{fabricName}
: Azure -
{vaultName}
: SQLServer2012 -
{vaultresourceGroupName}
: SQLServerSelfHost -
$filter
: backupManagementType eq "AzureWorkload"
Ponieważ wszystkie wymagane parametry są podane w identyfikatorze URI3, oddzielna treść żądania nie jest potrzebna.
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'
Odpowiedzi na operację odświeżania
Operacja odświeżania jest operacją asynchroniczną. Oznacza to, że ta operacja tworzy inną operację, która musi być śledzona oddzielnie.
Zwraca dwie odpowiedzi: 202 (Zaakceptowane) podczas tworzenia innej operacji i 200 (OK) po zakończeniu tej operacji.
Przykładowe odpowiedzi na operację odświeżania
Po przesłaniu żądania POST zostanie zwrócona odpowiedź 202 (Zaakceptowana).
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
Śledź wynikową operację przy użyciu nagłówka Location za pomocą prostego polecenia 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
Po odnalezieniu wszystkich baz danych SQL polecenie GET zwraca odpowiedź 200 (brak zawartości). Sejf teraz może odnajdywać każdą maszynę wirtualną z bazami danych SQL, które można zabezpieczyć jako kopię zapasową w ramach subskrypcji.
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
Wyświetl listę maszyn wirtualnych z bazami danych SQL do utworzenia kopii zapasowej w magazynie usługi Recovery Services
Aby potwierdzić, że buforowanie jest wykonywane, wyświetl listę wszystkich maszyn wirtualnych w subskrypcji z bazami danych SQL, których kopię zapasową można utworzyć za pomocą magazynu usługi Recovery Services. Następnie znajdź żądane konto magazynu w odpowiedzi. Odbywa się to przy użyciu operacji 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'
Uwaga / Notatka
Identyfikator URI GET zawiera wszystkie wymagane parametry. Nie jest wymagana żadna dodatkowa treść żądania.
Przykład treści odpowiedzi:
{
"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"
}
}
]
}
Ponieważ możemy zlokalizować maszyny wirtualne w treści odpowiedzi z ich przyjaznymi nazwami, operacja odświeżania wykonana powyżej zakończyła się pomyślnie. Magazyn usługi Recovery Services może teraz pomyślnie odnaleźć maszyny wirtualne z niechronionymi bazami danych SQL w tej samej subskrypcji.
Rejestrowanie maszyn wirtualnych w skarbcu usługi Recovery Services
Musisz zarejestrować maszyny wirtualne w magazynie usługi Recovery Services, aby usługa Azure Backup mogła wchodzić w interakcje z bazami danych SQL wewnątrz maszyny wirtualnej (użyj wartości w polu Nazwa, aby zidentyfikować kontener maszyny wirtualnej platformy Azure). Musisz podać wartości w żądaniu JSON, aby uzyskać treść żądania HTTP z właściwości listy kontenerów możliwych do ochrony.
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}?api-version=2016-12-01
Ustaw zmienne dla identyfikatora URI w następujący sposób:
-
{resourceGroupName}
- SQLServerSelfHost -
{fabricName}
- Błękit -
{vaultName}
- SQLServer2012 -
{containerName}
— jest to atrybut name w treści odpowiedzi operacji GET ProtectableContainers . W naszym przykładzie nazwa atrybutu to VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0.
Uwaga / Notatka
Pamiętaj, aby zawsze wziąć atrybut 'name' z odpowiedzi i wypełnić go w tym żądaniu. Nie należy pisać kodu ani tworzyć formatu nazwy kontenera. Jeśli zostanie utworzony lub zakodowany, wywołanie interfejsu API zakończy się niepowodzeniem, jeśli format nazwy kontenera zmieni się w przyszłości.
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
Treść żądania tworzenia jest następująca:
{
"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"
}
}
Aby uzyskać pełną listę definicji treści żądania i innych szczegółów, zobacz ProtectionContainers-Register.
Jest to operacja asynchroniczna i zwraca dwie odpowiedzi: 202 (Zaakceptowane) po zaakceptowaniu operacji i 200 (OK) po zakończeniu operacji. Aby śledzić stan operacji, użyj nagłówka lokalizacji, aby uzyskać najnowszy stan operacji.
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
Przykład treści odpowiedzi po zakończeniu operacji:
{
"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"
}
}
Możesz sprawdzić, czy rejestracja zakończyła się pomyślnie z wartości parametru registrationstatus w treści odpowiedzi. W naszym przypadku jest wyświetlany stan zarejestrowany dla serwera SQLServer2012; w związku z tym operacja rejestracji zakończyła się pomyślnie.
Zapytaj wszystkie niechronione bazy danych SQL w ramach maszyny wirtualnej
Aby uzyskać informacje o elementach, które można chronić na koncie magazynowym, użyj operacji Zapytanie kontenerów ochronnych. Jest to operacja asynchroniczna, a wyniki powinny być śledzone przy użyciu nagłówka "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}
Ustaw zmienne dla powyższego identyfikatora URI w następujący sposób:
-
{resourceGroupName}
: SQLServerSelfHost -
{vaultName}
: SQLServer2012 -
{fabricName}
: Azure -
{containerName}
: Odwołaj się do atrybutu name w treści odpowiedzi operacji GET ProtectableContainers. W naszym przykładzie nazwa atrybutu to 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'
Po pomyślnym wykonaniu żądania zostanie zwrócony kod stanu OK.
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
Wybierz bazy danych, dla których chcesz utworzyć kopię zapasową
Aby wyświetlić listę wszystkich elementów możliwych do ochrony w ramach subskrypcji i zlokalizować żądaną bazę danych do utworzenia kopii zapasowej, użyj operacji GET backupprotectableItems .
GET https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupProtectableItems?api-version=2016-12-01&$filter={$filter}
Skonstruuj identyfikator URI w następujący sposób:
-
{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'
Przykładowa odpowiedź:
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"
}
}
]
}
Odpowiedź zawiera listę wszystkich niechronionych baz danych i zawiera wszystkie informacje wymagane przez usługę Azure Recovery Service do skonfigurowania kopii zapasowej. Zapisz nazwy baz danych do użycia w przyszłości.
Włączanie tworzenia kopii zapasowej bazy danych
Po zidentyfikowaniu odpowiedniej bazy danych o przyjaznej nazwie:
- Wybierz politykę do ochrony.
- Wyświetl listę istniejących zasad w magazynie, użyj interfejsu API listy zasad.
- Wybierz odpowiednie zasady , odwołując się do nazwy zasad.
- Samouczek dotyczący tworzenia zasad.
Włączanie ochrony to asynchroniczna operacja PUT , która tworzy chroniony element.
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
Ustaw zmienne containerName i protectedItemName przy użyciu atrybutu ID w treści odpowiedzi operacji GET backupprotectableitems .
W naszym przykładzie identyfikator zasobu plikowego, który chcemy chronić, to:
/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
Utwórz treść żądania:
Następująca treść żądania definiuje właściwości wymagane do utworzenia chronionego elementu.
{
"properties": {
"backupManagementType": "AzureWorkload",
"workloadType": "SQLDataBase",
"policyId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupPolicies/HourlyLogBackup"
},
"location": "westcentralus"
}
Po przesłaniu żądania PUT w celu utworzenia lub zaktualizowania chronionego elementu, początkowa odpowiedź to 202 (Zaakceptowane) z nagłówkiem lokalizacji.
Przykładowa odpowiedź
Tworzenie chronionego elementu jest operacją asynchroniczną, która tworzy inną operację, która musi być śledzona. Zwraca dwie odpowiedzi: 202 (Zaakceptowane) podczas tworzenia innej operacji i 200 (OK) po zakończeniu tej operacji.
Po przesłaniu żądania PUT w celu utworzenia lub zaktualizowania chronionego elementu, początkowa odpowiedź to 202 (Zaakceptowane) z nagłówkiem lokalizacji.
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
Następnie śledź wynikową operację przy użyciu nagłówka lokalizacji lub nagłówka Azure-AsyncOperation za pomocą polecenia GET .
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
Po zakończeniu operacji zwracany jest komunikat 200 (OK) wraz z zawartością chronionego elementu w treści odpowiedzi.
Przykładowa treść odpowiedzi:
{
"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"
}
}
Potwierdza to, że ochrona jest włączona dla bazy danych, a pierwsza kopia zapasowa zostanie uruchomiona zgodnie z harmonogramem polityki.
Wyzwalanie kopii zapasowej na żądanie dla bazy danych
Po skonfigurowaniu bazy danych na potrzeby tworzenia kopii zapasowych kopie zapasowe są uruchamiane zgodnie z harmonogramem zasad. Możesz poczekać na pierwszą zaplanowaną kopię zapasową lub wyzwolić kopię zapasową na żądanie w dowolnym momencie.
Wyzwalanie kopii zapasowej na żądanie jest operacją POST .
Uwaga / Notatka
Okres przechowywania tej kopii zapasowej jest określany przez typ uruchomionej kopii zapasowej na żądanie.
- Pełne kopie zapasowe na żądanie są przechowywane przez co najmniej 45 dni i maksymalnie 99 lat.
- Tylko pełne kopiowanie na żądanie akceptuje dowolną wartość przechowywania.
- Różnicowa kopia zapasowa na żądanie zachowuje kopię zapasową zgodnie z zasadami przechowywania zaplanowanych kopii różnicowych.
- Dziennik na żądanie zachowuje kopie zapasowe zgodnie z zasadami przechowywania zaplanowanych dzienników.
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
Nazwy {containerName} i {protectedItemName} są ustawione zgodnie z opisem powyżej podczas włączania kopii zapasowej. W naszym przykładzie przekłada się to na:
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
Tworzenie treści żądania
Użyj następującej treści żądania, aby utworzyć pełną kopię zapasową na żądanie.
{
"properties": {
"objectType": "AzureWorkloadBackupRequest",
"backupType": "Full"
}
}
Odpowiedzi na operację tworzenia kopii zapasowej na żądanie
Wyzwalanie kopii zapasowej na żądanie jest operacją asynchroniczną. Oznacza to, że ta operacja tworzy inną operację, która musi być śledzona oddzielnie.
Zwraca ona dwie odpowiedzi: 202 (zaakceptowane), gdy zostanie utworzona inna operacja i 200 (OK) po zakończeniu tej operacji.
Przykładowe odpowiedzi na operację tworzenia kopii zapasowej na żądanie
Po przesłaniu żądania POST dla kopii zapasowej na żądanie, początkowa odpowiedź to 202 (Zaakceptowane) z nagłówkiem lokalizacji lub nagłówkiem 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
Następnie śledź wynikową operację przy użyciu nagłówka lokalizacji lub nagłówka Azure-AsyncOperation za pomocą polecenia GET .
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
Po zakończeniu operacji zwraca kod 200 (OK) z identyfikatorem powstałego zadania tworzenia kopii zapasowej w treści odpowiedzi.
Przykładowa treść odpowiedzi
{
"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"
}
}
Ponieważ zadanie tworzenia kopii zapasowej jest długotrwałą operacją, należy ją śledzić zgodnie z opisem w dokumencie monitorowania zadań przy użyciu interfejsu API REST.
Dalsze kroki
- Przywracanie baz danych SQL przy użyciu interfejsu API REST.
- Zarządzanie bazami danych programu SQL Server na maszynach wirtualnych platformy Azure przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure, interfejsu API REST.