Obnovení databází SQL na virtuálním počítači Azure pomocí Azure CLI

\Azure CLI slouží k vytváření a správě prostředků Azure z příkazového řádku nebo prostřednictvím skriptů. Tento článek popisuje, jak obnovit zálohovanou databázi SQL na virtuálním počítači Azure pomocí Azure CLI. Tyto akce můžete také provádět pomocí Azure Portal.

Ke spouštění příkazů rozhraní příkazového řádku použijte Azure Cloud Shell.

V tomto článku se naučíte:

  • Zobrazení bodů obnovení zálohované databáze
  • Obnovení databáze

Tento článek předpokládá, že máte databázi SQL spuštěnou na virtuálním počítači Azure, která se zálohuje pomocí Azure Backup. Pokud jste k zálohování databáze SQL použili zálohování databáze SQL v Azure pomocí rozhraní příkazového řádku , používáte následující prostředky:

  • Skupina prostředků s názvem SQLResourceGroup.
  • Trezor s názvem SQLVault.
  • Chráněný kontejner s názvem VMAppContainer;Compute;SQLResourceGroup;testSQLVM.
  • Zálohovaná databáze nebo položka s názvem sqldatabase;mssqlserver;master.
  • Prostředky v westus oblasti.

Poznámka

Další informace o podporovaných konfiguracích a scénářích najdete v matici podpory zálohování SQL .

Zobrazení bodů obnovení zálohované databáze

Pokud chcete zobrazit seznam všech bodů obnovení pro databázi, použijte příkaz 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

Seznam bodů obnovení se zobrazí takto:

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

Výše uvedený seznam obsahuje tři body obnovení: každý pro úplné zálohování, rozdílové zálohování a zálohování protokolů.

Poznámka

Pomocí příkazu az backup recoverypoint show-log-chain můžete také zobrazit počáteční a koncový bod každého nepřerušeného řetězce zálohování protokolů.

Požadavky na obnovení databáze

Před obnovením databáze se ujistěte, že jsou splněné následující požadavky:

  • Databázi můžete obnovit pouze do instance SQL ve stejné oblasti.
  • Cílová instance musí být zaregistrovaná ve stejném trezoru jako zdroj.

Obnovení databáze

Azure Backup můžete obnovit databáze SQL, které běží na virtuálních počítačích Azure, jako:

  • Obnovení k určitému datu nebo času (k druhému) pomocí zálohování protokolů Azure Backup automaticky určí odpovídající úplné rozdílové zálohy a řetěz záloh protokolů, které se vyžadují k obnovení na základě vybraného času.
  • Obnovením do konkrétní úplné nebo rozdílové zálohy provedete obnovení do konkrétního bodu obnovení.

K obnovení databáze použijte příkaz az restore restore-azurewl , který jako jeden ze vstupů vyžaduje objekt konfigurace obnovení. Tento objekt můžete vygenerovat pomocí příkazu az backup recoveryconfig show . Objekt konfigurace obnovení obsahuje všechny podrobnosti pro provedení obnovení. Jedním z nich je režim obnovení – OriginalWorkloadRestore nebo AlternateWorkloadRestore.

Poznámka

OriginalWorkloadRestore: Obnoví data do stejné instance SQL jako původní zdroj. Tato možnost přepíše původní databázi. AlternateWorkloadRestore: Obnoví databázi do alternativního umístění a zachová původní zdrojovou databázi.

Obnovení do alternativního umístění

Pokud chcete obnovit databázi do alternativního umístění, jako režim obnovení použijte AlternateWorkloadRestore . Pak musíte zvolit bod obnovení, kterým může být předchozí bod v čase nebo jakýkoli předchozí bod obnovení.

Pojďme pokračovat obnovením k předchozímu bodu obnovení. Zobrazte seznam bodů obnovení databáze a zvolte bod, který chcete obnovit. Tady použijeme bod obnovení s názvem 7660777527047692711.

Pomocí výše uvedeného názvu bodu obnovení a režimu obnovení vytvořte objekt konfigurace obnovení pomocí příkazu az backup recoveryconfig show . Zkontrolujte zbývající parametry v tomto příkazu:

  • --target-item-name: Název, který má být použit obnovenou databází. V tomto scénáři jsme použili název restored_database.
  • --target-server-name: Název serveru SQL, který je úspěšně zaregistrovaný v trezoru služby Recovery Services a zůstává ve stejné oblasti jako databáze, která se má obnovit. Tady obnovujete databázi na stejný sql server, který jste chránili, s názvem testSQLVM.
  • --target-server-type: K obnovení databází SQL musíte použít instanci SQL.

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

Odpověď na výše uvedený dotaz je objekt konfigurace obnovení, který se zobrazí 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": []
}

Teď databázi obnovíte spuštěním příkazu az restore restore-azurewl . Pokud chcete použít tento příkaz, zadejte výše uvedený výstup JSON, který se uloží do souboru s názvem recoveryconfig.json.

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

Výstup se zobrazí takto:

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

V odpovědi se zobrazí název úlohy. Tento název úlohy můžete použít ke sledování stavu úlohy pomocí příkazu az backup job show .

Obnovení a přepsání

Pokud chcete provést obnovení do původního umístění, jako režim obnovení použijte OriginalWorkloadRestore . Pak musíte zvolit bod obnovení, kterým může být předchozí bod v čase nebo kterýkoli z předchozích bodů obnovení.

Jako příklad zvolíme předchozí bod v čase 28-11-2019-09:53:00, do které chcete provést obnovení. Tento bod obnovení můžete zadat v následujících formátech: dd-mm-yyyy, dd-mm-yyyy-hh:mm:ss. Pokud chcete zvolit platný bod v čase k obnovení, použijte příkaz az backup recoverypoint show-log-chain , který uvádí intervaly nepřerušeného zálohování řetězu protokolů.

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

Odpověď na výše uvedený dotaz je objekt konfigurace obnovení, který se zobrazí 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"
}

Teď databázi obnovíte spuštěním příkazu az restore restore-azurewl . Pokud chcete použít tento příkaz, zadejte výše uvedený výstup JSON, který se uloží do souboru s názvem recoveryconfig.json.

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

Výstup se zobrazí takto:

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

V odpovědi se zobrazí název úlohy. Tento název úlohy můžete použít ke sledování stavu úlohy pomocí příkazu az backup job show .

Obnovení do sekundární oblasti

Pokud chcete obnovit databázi do sekundární oblasti, zadejte v konfiguraci obnovení cílový trezor a server umístěný v sekundární oblasti.

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

Odpověď je objekt konfigurace obnovení, který se zobrazí 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": [],
}

Tuto konfiguraci obnovení použijte v příkazu az restore restore-azurewl . Výběrem příznaku --use-secondary-region obnovíte databázi do sekundární oblasti.

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

Výstup se zobrazí takto:

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

Poznámka

Cíl bodu obnovení pro zálohovaná data, která mají být k dispozici v sekundární oblasti, je 12 hodin. Proto když zapnete CRR, je cíl bodu obnovení pro sekundární oblast 12 hodin + doba trvání protokolování (kterou je možné nastavit na minimálně 15 minut).

Obnovení souborů

Pokud chcete obnovit zálohovaná data jako soubory místo databáze, použijte jako režim obnovení RestoreAsFiles . Pak zvolte bod obnovení, kterým může být předchozí bod v čase nebo jakýkoli předchozí bod obnovení. Po výpisu souborů do zadané cesty můžete tyto soubory přenést do libovolného počítače SQL, kde je chcete obnovit jako databázi. Vzhledem k tomu, že tyto soubory můžete přesunout do libovolného počítače, můžete teď obnovit data napříč předplatnými a oblastmi.

Tady zvolte předchozí bod v čase 28-11-2019-09:53:00 , který chcete obnovit, a umístění výpisu záložních souborů jako /home/sql/restoreasfiles na stejném SQL Serveru. Tento bod obnovení můžete zadat v jednom z následujících formátů: dd-mm-yyyy nebo dd-mm-yyyy-hh:mm:ss. Pokud chcete zvolit platný bod v čase k obnovení, použijte příkaz az backup recoverypoint show-log-chain , který uvádí intervaly nepřerušeného zálohování řetězu protokolů.

Pomocí výše uvedeného názvu bodu obnovení a režimu obnovení vytvořte objekt konfigurace obnovení pomocí příkazu az backup recoveryconfig show . Zkontrolujte všechny zbývající parametry v tomto příkazu:

  • --target-container-name: Název serveru SQL, který je úspěšně zaregistrovaný v trezoru služby Recovery Services a který se nachází ve stejné oblasti jako databáze, která se má obnovit. Pojďme obnovit databázi jako soubory na stejný sql server, který jste chránili, s názvem hxehost.
  • --rp-name: Pro obnovení k určitému bodu v čase je název bodu obnovení 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

Odpověď na dotaz nad js objekt konfigurace obnovení, který se zobrazí 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"
}

Pokud chcete databázi obnovit jako soubory, spusťte příkaz az restore restore-azurewl . Pokud chcete použít tento příkaz, zadejte výše uvedený výstup JSON, který se uloží do souboru s názvem recoveryconfig.json.

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

Výstup se zobrazí takto:

{
  "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"
}

V odpovědi se zobrazí název úlohy. Tento název úlohy můžete použít ke sledování stavu úlohy pomocí příkazu az backup job show .

Poznámka

Pokud nechcete obnovit celý řetěz, ale jenom podmnožinu souborů, postupujte podle pokynů uvedených tady.

Obnovení mezi předplatnými

S obnovením mezi předplatnými (CSR) máte flexibilitu při obnovení do libovolného předplatného a trezoru v rámci vašeho tenanta, pokud jsou k dispozici oprávnění k obnovení. Ve výchozím nastavení je csr povolená pro všechny trezory služby Recovery Services (existující a nově vytvořené trezory).

Poznámka

  • Obnovení mezi předplatnými můžete aktivovat z trezoru služby Recovery Services.
  • Csr se podporuje jenom pro zálohování na základě streamování a nepodporuje se pro zálohování založené na snímcích.
  • Obnovení mezi oblastmi (CRR) s csr se nepodporuje.
az backup vault create

Přidejte parametr cross-subscription-restore-state , který vám umožní nastavit stav CSR trezoru během vytváření a aktualizace trezoru.

az backup recoveryconfig show

Přidejte parametr --target-subscription-id , který vám umožní zadat cílové předplatné jako vstup při aktivaci obnovení mezi předplatnými pro zdroje dat SQL nebo HANA.

Příklad:

   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}

Další kroky