Udostępnij za pośrednictwem


Przywracanie baz danych SQL na maszynie wirtualnej platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure

Interfejs wiersza polecenia platformy Azure służy do tworzenia zasobów platformy Azure i zarządzania nimi z poziomu wiersza polecenia lub za pośrednictwem skryptów. W tym artykule opisano sposób przywracania kopii zapasowej bazy danych SQL na maszynie wirtualnej platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure. Te akcje można również wykonać przy użyciu witryny Azure Portal.

Użyj usługi Azure Cloud Shell , aby uruchomić polecenia interfejsu wiersza polecenia.

W tym artykule założono, że masz bazę danych SQL działającą na maszynie wirtualnej platformy Azure, której kopia zapasowa jest tworzona przy użyciu usługi Azure Backup. Jeśli utworzono kopię zapasową bazy danych SQL na platformie Azure przy użyciu interfejsu wiersza polecenia w celu utworzenia kopii zapasowej bazy danych SQL, użyjesz następujących zasobów:

  • Grupa zasobów o nazwie SQLResourceGroup.
  • Magazyn o nazwie SQLVault.
  • Chroniony kontener o nazwie VMAppContainer;Compute;SQLResourceGroup;testSQLVM.
  • Kopia zapasowa bazy danych/elementu o nazwie sqldatabase;mssqlserver;master.
  • Zasoby w westus regionie.

Uwaga

Zobacz macierz obsługi kopii zapasowych SQL, aby dowiedzieć się więcej na temat obsługiwanych konfiguracji i scenariuszy.

Wyświetlanie punktów przywracania dla bazy danych kopii zapasowej

Aby wyświetlić listę wszystkich punktów odzyskiwania dla bazy danych, użyj polecenia az backup recoverypoint list jako:

az backup recoverypoint list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
   --output table

Lista punktów odzyskiwania jest wyświetlana jako:

Name                      Time                               BackupManagementType   Item Name               		RecoveryPointType
-------------------       ---------------------------------  ---------------------  ----------------------  		------------------
7660777527047692711       2019-12-10T04:00:32.346000+00:00   AzureWorkload          sqldatabase;mssqlserver;master  Full
7896624824685666836       2019-12-15T10:33:32.346000+00:00   AzureWorkload          sqldatabase;mssqlserver;master  Differential
DefaultRangeRecoveryPoint                                    AzureWorkload          sqldatabase;mssqlserver;master  Log

Powyższa lista zawiera trzy punkty odzyskiwania: każdy dla pełnej, różnicowej i kopii zapasowej dziennika.

Uwaga

Możesz również wyświetlić punkty początkowe i końcowe każdego niezałamanego łańcucha kopii zapasowych dzienników przy użyciu polecenia az backup recoverypoint show-log-chain .

Wymagania wstępne dotyczące przywracania bazy danych

Przed przywróceniem bazy danych upewnij się, że zostały spełnione następujące wymagania wstępne:

  • Bazę danych można przywrócić tylko do wystąpienia SQL w tym samym regionie.
  • Wystąpienie docelowe musi być zarejestrowane w tym samym magazynie co źródło.

Przywracanie bazy danych

Usługa Azure Backup może przywrócić bazy danych SQL uruchomione na maszynach wirtualnych platformy Azure jako:

  • Przywróć do określonej daty lub godziny (do sekundy) przy użyciu kopii zapasowych dziennika. Usługa Azure Backup automatycznie określa odpowiednie pełne, różnicowe kopie zapasowe i łańcuch kopii zapasowych dzienników, które są wymagane do przywrócenia na podstawie wybranego czasu.
  • Przywracanie do określonej pełnej lub różnicowej kopii zapasowej w celu przywrócenia do określonego punktu odzyskiwania.

Aby przywrócić bazę danych, użyj polecenia az restore-azurewl , które wymaga obiektu konfiguracji odzyskiwania jako jednego z danych wejściowych. Ten obiekt można wygenerować za pomocą polecenia az backup recoveryconfig show . Obiekt konfiguracji odzyskiwania zawiera wszystkie szczegóły dotyczące wykonywania przywracania. Jednym z nich jest tryb przywracania — OriginalWorkloadRestore lub AlternateWorkloadRestore.

Uwaga

OriginalWorkloadRestore: przywraca dane do tego samego wystąpienia SQL co oryginalne źródło. Ta opcja zastępuje oryginalną bazę danych. AlternateWorkloadRestore: przywraca bazę danych do alternatywnej lokalizacji i przechowuje oryginalną źródłową bazę danych.

Przywracanie do lokalizacji alternatywnej

Aby przywrócić bazę danych do alternatywnej lokalizacji, użyj polecenia AlternateWorkloadRestore jako trybu przywracania. Następnie należy wybrać punkt przywracania, który może być poprzednim punktem w czasie lub poprzednimi punktami przywracania.

Przejdźmy do przywrócenia do poprzedniego punktu przywracania. Wyświetl listę punktów przywracania dla bazy danych i wybierz punkt, który chcesz przywrócić. W tym miejscu użyjemy punktu przywracania o nazwie 7660777527047692711.

Przy użyciu powyższej nazwy punktu przywracania i trybu przywracania utwórz obiekt konfiguracji odzyskiwania za pomocą polecenia az backup recoveryconfig show . Sprawdź pozostałe parametry w tym poleceniu:

  • --target-item-name: nazwa, która ma być używana przez przywróconą bazę danych. W tym scenariuszu użyliśmy nazwy restored_database.
  • --target-server-name: nazwa serwera SQL, który został pomyślnie zarejestrowany w magazynie usługi Recovery Services i pozostaje w tym samym regionie co baza danych do przywrócenia. W tym miejscu przywracasz bazę danych do tego samego serwera SQL, który jest chroniony, o nazwie testSQLVM.
  • --target-server-type: w przypadku przywracania baz danych SQL należy użyć klasy SQLInstance.

az backup recoveryconfig show --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name SQLDataBase;mssqlserver;master \
    --restore-mode AlternateWorkloadRestore \
    --rp-name 7660777527047692711 \
    --target-item-name restored_database \
    --target-server-name testSQLVM \
    --target-server-type SQLInstance \
    --workload-type SQLDataBase \
    --output json

Odpowiedź na powyższe zapytanie to obiekt konfiguracji odzyskiwania, który jest wyświetlany jako:

{
  "container_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;SQLResourceGroup;testSQLVM",
  "container_uri": "VMAppContainer;compute;SQLResourceGroup;testSQLVM",
  "database_name": "MSSQLSERVER/restored_database",
  "filepath": null,
  "item_type": "SQL",
  "item_uri": "SQLDataBase;mssqlserver;master",
  "log_point_in_time": null,
  "recovery_mode": null,
  "recovery_point_id": "7660777527047692711",
  "restore_mode": "AlternateLocation",
  "source_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.Compute/virtualMachines/testSQLVM",
  "workload_type": "SQLDataBase",
  "alternate_directory_paths": []
}

Teraz, aby przywrócić bazę danych, uruchom polecenie az restore-azurewl . Aby użyć tego polecenia, wprowadź powyższe dane wyjściowe JSON zapisane w pliku o nazwie recoveryconfig.json.

az backup restore restore-azurewl --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --recovery-config recoveryconfig.json \
    --output table

Dane wyjściowe są wyświetlane jako:

Name                                  Operation    Status      Item Name                          Backup Management Type    Start Time UTC                    Duration
------------------------------------  -----------  ----------  ---------------------------------  ------------------------  --------------------------------  --------------
be7ea4a4-0752-4763-8570-a306b0a0106f  Restore      InProgress  master [testSQLVM]  				  AzureWorkload             2022-06-21T03:51:06.898981+00:00  0:00:05.652967

Odpowiedź zawiera nazwę zadania. Tej nazwy zadania można użyć do śledzenia stanu zadania za pomocą polecenia az backup job show .

Przywracanie i zastępowanie

Aby przywrócić do oryginalnej lokalizacji, użyj elementu OriginalWorkloadRestore jako trybu przywracania. Następnie należy wybrać punkt przywracania, który może być poprzednim punktem w czasie lub dowolnym z poprzednich punktów przywracania.

Na przykład wybierzmy poprzedni punkt w czasie "28-11-2019-09:53:00" w celu przywrócenia. Ten punkt przywracania można podać w następujących formatach: dd-mm-rrrr, dd-mm-yyyy-hh:mm:ss. Aby wybrać prawidłowy punkt w czasie do przywrócenia, użyj polecenia az backup recoverypoint show-log-chain , które wyświetla interwały niepowiązanych kopii zapasowych łańcucha dzienników.

az backup recoveryconfig show --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --restore-mode OriginalWorkloadRestore \
    --log-point-in-time 20-06-2022-09:02:41 \
    --output json

Odpowiedź na powyższe zapytanie to obiekt konfiguracji odzyskiwania, który jest wyświetlany jako:

{
  "alternate_directory_paths": null,
  "container_id": null,
  "container_uri": "VMAppContainer;compute;petronasinternaltest;sqlserver-11",
  "database_name": null,
  "filepath": null,
  "item_type": "SQL",
  "item_uri": "SQLDataBase;mssqlserver;msdb",
  "log_point_in_time": "20-06-2022-09:02:41",
  "recovery_mode": null,
  "recovery_point_id": "DefaultRangeRecoveryPoint",
  "restore_mode": "OriginalLocation",
  "source_resource_id": "/subscriptions/62b829ee-7936-40c9-a1c9-47a93f9f3965/resourceGroups/petronasinternaltest/providers/Microsoft.Compute/virtualMachines/sqlserver-11",
  "workload_type": "SQLDataBase"
}

Teraz, aby przywrócić bazę danych, uruchom polecenie az restore-azurewl . Aby użyć tego polecenia, wprowadź powyższe dane wyjściowe JSON zapisane w pliku o nazwie recoveryconfig.json.

az backup restore restore-azurewl --resource-group sqlResourceGroup \
    --vault-name sqlVault \
    --recovery-config recoveryconfig.json \
    --output table

Dane wyjściowe są wyświetlane jako:

Name                                  Operation    Status      Item Name                        Backup Management Type    Start Time UTC                    Duration
------------------------------------  -----------  ----------  -------------------------------  ------------------------  --------------------------------  --------------
1730ec49-166a-4bfd-99d5-93027c2d8480  Restore      InProgress  master [testSQLVM]  				AzureWorkload             2022-06-21T04:04:11.161411+00:00  0:00:03.118076

Odpowiedź zawiera nazwę zadania. Tej nazwy zadania można użyć do śledzenia stanu zadania przy użyciu polecenia az backup job show .

Przywracanie do regionu pomocniczego

Aby przywrócić bazę danych do regionu pomocniczego, określ docelowy magazyn i serwer znajdujący się w regionie pomocniczym w konfiguracji przywracania.

az backup recoveryconfig show --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --restore-mode AlternateWorkloadRestore \
    --from-full-rp-name 293170069256531 \
    --rp-name 293170069256531 \
    --target-server-name targetSQLServer \
    --target-container-name VMAppContainer;compute;SQLResourceGroup;targetSQLServer \
    --target-item-name testdb_restore_1 \
    --target-server-type SQLInstance \
    --workload-type SQLDataBase \
    --target-resource-group SQLResourceGroup \
    --target-vault-name targetVault \
    --backup-management-type AzureWorkload

Odpowiedź to obiekt konfiguracji odzyskiwania, który jest wyświetlany jako:

 {
  "container_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/targetVault/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;SQLResourceGroup;targetSQLServer",
  "container_uri": "VMAppContainer;compute;SQLResourceGroup;testSQLVM",
  "database_name": "MSSQLSERVER/sqldatabase;mssqlserver;testdb_restore_1",
  "filepath": null,
  "item_type": "SQL",
  "item_uri": "SQLDataBase;mssqlserver;master",
  "log_point_in_time": null,
  "recovery_mode": null,
  "recovery_point_id": "932606668166874635",
  "restore_mode": "AlternateLocation",
  "source_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.Compute/virtualMachines/testSQLVM",
  "workload_type": "SQLDataBase",
  "alternate_directory_paths": [],
}

Użyj tej konfiguracji odzyskiwania w poleceniu az restore-azurewl . Wybierz flagę --use-secondary-region , aby przywrócić bazę danych do regionu pomocniczego.

az backup restore restore-azurewl --resource-group SQLResourceGroup \
    --vault-name testSQLVault \
    --recovery-config recoveryconfig.json \
    --use-secondary-region \
    --output table

Dane wyjściowe są wyświetlane jako:

Name                                  Operation           Status      Item Name                  Backup Management Type    Start Time UTC                    Duration
------------------------------------  ------------------  ----------  -------------------------  ------------------------  --------------------------------  --------------
0d863259-b0fb-4935-8736-802c6667200b  CrossRegionRestore  InProgress  master [testSQLVM] 		 AzureWorkload             2022-06-21T08:29:24.919138+00:00  0:00:12.372421

Uwaga

Cel punktu odzyskiwania dla danych kopii zapasowej, który ma być dostępny w regionie pomocniczym, wynosi 12 godzin. W związku z tym po włączeniu funkcji CRR cel punktu odzyskiwania dla regionu pomocniczego wynosi 12 godzin i czas trwania częstotliwości rejestrowania (który można ustawić na co najmniej 15 minut).

Przywracanie jako pliki

Aby przywrócić dane kopii zapasowej jako pliki zamiast bazy danych, użyj polecenia RestoreAsFiles jako trybu przywracania. Następnie wybierz punkt przywracania, który może być poprzednim punktem w czasie lub poprzednimi punktami przywracania. Gdy pliki zostaną porzucane do określonej ścieżki, możesz przełączyć te pliki na dowolną maszynę SQL, na której chcesz je przywrócić jako bazę danych. Ponieważ można przenieść te pliki na dowolną maszynę, możesz teraz przywrócić dane między subskrypcjami i regionami.

W tym miejscu wybierz poprzedni punkt w czasie 28-11-2019-09:53:00 , aby przywrócić i lokalizację, w którym mają być zrzucane pliki kopii zapasowej, co /home/sql/restoreasfiles na tym samym serwerze SQL. Ten punkt przywracania można podać w jednym z następujących formatów: dd-mm-rrrr lub dd-mm-yy-hh:mm:ss. Aby wybrać prawidłowy punkt w czasie do przywrócenia, użyj polecenia az backup recoverypoint show-log-chain , które wyświetla interwały niepowiązanych kopii zapasowych łańcucha dzienników.

Przy użyciu powyższej nazwy punktu przywracania i trybu przywracania utwórz obiekt konfiguracji odzyskiwania za pomocą polecenia az backup recoveryconfig show . Sprawdź wszystkie pozostałe parametry w tym poleceniu:

  • --target-container-name: nazwa serwera SQL, który został pomyślnie zarejestrowany w magazynie usługi Recovery Services i znajduje się w tym samym regionie co dla bazy danych do przywrócenia. Przywróćmy bazę danych jako pliki do tego samego serwera SQL, który był chroniony, o nazwie hxehost.
  • --rp-name: w przypadku przywracania do punktu w czasie nazwa punktu przywracania to DefaultRangeRecoveryPoint.
az backup recoveryconfig show --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --restore-mode RestoreAsFiles \
    --rp-name 932606668166874635 \
    --target-container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --filepath /sql/restoreasfiles \
    --output json

Odpowiedź na powyższe zapytanie js obiekt konfiguracji odzyskiwania, który jest wyświetlany jako:

{
  "alternate_directory_paths": null,
  "container_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLResourceGroup;testSQLVM",
  "container_uri": "VMAppContainer;compute;SQLResourceGroup;testSQLVM",
  "database_name": null,
  "filepath": "/sql/restoreasfiles",
  "item_type": "SQL",
  "item_uri": "SQLDataBase;mssqlserver;master",
  "log_point_in_time": null,
  "recovery_mode": "FileRecovery",
  "recovery_point_id": "932606668166874635",
  "restore_mode": "AlternateLocation",
  "source_resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.Compute/virtualMachines/testSQLVM",
  "workload_type": "SQLDataBase"
}

Teraz, aby przywrócić bazę danych jako pliki, uruchom polecenie az restore-azurewl . Aby użyć tego polecenia, wprowadź dane wyjściowe JSON powyżej zapisane w pliku o nazwie recoveryconfig.json.

az backup restore restore-azurewl --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --restore-config recoveryconfig.json \
    --output json

Dane wyjściowe są wyświetlane jako:

{
  "eTag": null,
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupJobs/e9cd9e73-e3a3-425a-86a9-8dd1c500ff56",
  "location": null,
  "name": "e9cd9e73-e3a3-425a-86a9-8dd1c500ff56",
  "properties": {
    "actionsInfo": [
      "1"
    ],
    "activityId": "9e7c8ee4-f1ef-11ec-8a2c-3c52826c1a9a",
    "backupManagementType": "AzureWorkload",
    "duration": "0:00:04.304322",
    "endTime": null,
    "entityFriendlyName": "master [testSQLVM]",
    "errorDetails": > [!NOTE]
> Information the user should notice even if skimmingnull,
    "extendedInfo": {
      "dynamicErrorMessage": null,
      "propertyBag": {
        "Job Type": "Restore as files"
      },
      "tasksList": [
        {
          "status": "InProgress",
          "taskId": "Transfer data from vault"
        }
      ]
    },
    "isUserTriggered": true,
    "jobType": "AzureWorkloadJob",
    "operation": "Restore",
    "startTime": "2022-06-22T05:53:32.951666+00:00",
    "status": "InProgress",
    "workloadType": "SQLDataBase"
  },
  "resourceGroup": "SQLResourceGroup",
  "tags": null,
  "type": "Microsoft.RecoveryServices/vaults/backupJobs"
}

Odpowiedź zawiera nazwę zadania. Tej nazwy zadania można użyć do śledzenia stanu zadania przy użyciu polecenia az backup job show .

Uwaga

Jeśli nie chcesz przywracać całego łańcucha, ale tylko podzbioru plików, wykonaj kroki opisane tutaj.

Przywracanie między subskrypcjami

W przypadku przywracania między subskrypcjami (CSR) masz elastyczność przywracania do dowolnej subskrypcji i dowolnego magazynu w dzierżawie, jeśli są dostępne uprawnienia przywracania. Domyślnie csr jest włączona we wszystkich magazynach usługi Recovery Services (istniejących i nowo utworzonych magazynach).

Uwaga

  • Przywracanie między subskrypcjami można wyzwolić z magazynu usługi Recovery Services.
  • Csr jest obsługiwane tylko w przypadku kopii zapasowych opartych na strumieniu i nie jest obsługiwane w przypadku kopii zapasowych opartych na migawkach.
  • Przywracanie między regionami (CRR) z csr nie jest obsługiwane.
az backup vault create

Dodaj parametr cross-subscription-restore-state , który umożliwia ustawienie stanu CSR magazynu podczas tworzenia i aktualizowania magazynu.

az backup recoveryconfig show

Dodaj parametr --target-subscription-id , który umożliwia podanie subskrypcji docelowej jako danych wejściowych podczas wyzwalania przywracania między subskrypcjami dla źródeł danych SQL lub HANA.

Przykład:

   az backup vault create -g {rg_name} -n {vault_name} -l {location} --cross-subscription-restore-state Disable
   az backup recoveryconfig show --restore-mode alternateworkloadrestore --backup-management-type azureworkload -r {rp} --target-container-name {target_container} --target-item-name {target_item} --target-resource-group {target_rg} --target-server-name {target_server} --target-server-type SQLInstance --target-subscription-id {target_subscription} --target-vault-name {target_vault} --workload-type SQLDataBase --ids {source_item_id}

Następny krok