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}