Sdílet prostřednictvím


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 provádět také pomocí webu Azure Portal.

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

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í služby 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 , pak 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é body 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ěny 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ůže obnovit databáze SQL spuštěné na virtuálních počítačích Azure jako:

  • Obnovení k určitému datu nebo času (do druhého) pomocí záloh protokolů Azure Backup automaticky určuje odpovídající úplné rozdílové zálohy a řetěz záloh protokolů, které jsou potřeba k obnovení na základě vybraného času.
  • Obnovení do konkrétního úplného nebo rozdílového zálohování pro 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 . Konfigurační objekt obnovení obsahuje všechny podrobnosti k 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í, použijte jako režim obnovení alternativní úložiště AlternateWorkloadRestore . Pak musíte zvolit bod obnovení, což může být předchozí bod v čase nebo předchozí body obnovení.

Pojďme pokračovat k obnovení do předchozího bodu obnovení. Zobrazte seznam bodů obnovení pro databázi 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á obnovená databáze používat. V tomto scénáři jsme použili název restored_database.
  • --target-server-name: Název sql serveru, který je úspěšně zaregistrovaný v trezoru služby Recovery Services, a zůstane stejnou oblastí jako databáze, která se má obnovit. Tady obnovujete databázi na stejný SQL server, který jste ochránili, s názvem testSQLVM.
  • --target-server-type: Pro obnovení databází SQL je nutné použít 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

Odpověď na výše uvedený dotaz je objekt konfigurace obnovení, který se zobrazí takto:

{
  "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ď spusťte příkaz az restore restore-azurewl , abyste databázi obnovili. 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

Odpověď vám poskytne 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í, použijte jako režim obnovení OriginalWorkloadRestore . Pak musíte zvolit bod obnovení, což 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 a obnovíme ho. Tento bod obnovení můžete poskytnout v následujících formátech: dd-mm-y, dd-mm-y-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ých záloh ř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í takto:

{
  "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ď spusťte příkaz az restore restore-azurewl , abyste databázi obnovili. 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

Odpověď vám poskytne 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, v konfiguraci obnovení zadejte 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ý vypadá takto:

 {
  "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 obnovte 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, cíl bodu obnovení pro sekundární oblast je 12 hodin + doba trvání frekvence protokolu (to lze nastavit na minimálně 15 minut).

Obnovení souborů

Chcete-li obnovit zálohovaná data jako soubory místo databáze, použijte jako režim obnovení RestoreAsFiles . Pak zvolte bod obnovení, který může být předchozí bod v čase nebo jakékoli předchozí body obnovení. Jakmile se soubory zadají do zadané cesty, můžete tyto soubory převést na jakýkoli počítač SQL, na kterém 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í pro výpis záložních souborů jako /home/sql/restoreasfiles na stejném SQL Serveru. Tento bod obnovení můžete poskytnout v jednom z následujících formátů: dd-mm-yyyy nebo dd-mm-y-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ých záloh ř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ě zaregistrován do trezoru služby Recovery Services a který se nachází ve stejné oblasti jako databáze, která se má obnovit. Pojďme databázi obnovit jako soubory na stejný SQL server, který jste ochrá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 výše uvedený dotaz js a 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"
}

Teď spusťte příkaz az restore restore-azurewl a obnovte databázi jako soubory. Pokud chcete tento příkaz použít, zadejte výstup JSON výše, 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"
}

Odpověď vám poskytne 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ězec, ale jenom podmnožinu souborů, postupujte podle zde uvedených kroků.

Obnovení mezi předplatnými

S obnovením mezi předplatnými (CSR) máte flexibilitu obnovení do libovolného předplatného a jakéhokoli 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í založené na 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ý umožňuje nastavit stav CSR trezoru během vytváření a aktualizace trezoru.

az backup recoveryconfig show

Přidejte parametr --target-subscription-id , který umožňuje 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ší krok