Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 využili zálohování databáze SQL v Azure pomocí příkazového řádku (CLI), pak používáte následující prostředky:
- Skupina prostředků pojmenovaná
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
westusoblasti.
Note
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ů.
Note
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 nebo do jiné oblasti, pokud je v trezoru (vault) povolena funkce obnovení mezi oblastmi (Cross Region Restore).
- Cílová instance musí být zaregistrována ve stejném trezoru jako zdroj, s výjimkou funkcí Cross Region Restore a Cross Subscription Restore. .
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 (na sekundu přesně) s využitím záloh protokolů Azure Backup automaticky určuje odpovídající úplné a rozdílové zálohy a řetěz záloh protokolů transakcí, které jsou potřeba k obnovení dat 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.
Note
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í AlternateWorkloadRestore. Pak musíte zvolit bod obnovení, což může být předchozí bod v čase nebo předchozí body obnovení.
Pojďme obnovit systém 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 tento příkaz použít, 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 zadat v následujících formátech: dd-mm-yyyy, dd-mm-yy-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 tento příkaz použít, 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
Note
Cíl RPO pro zálohovaná data, která mají být k dispozici v sekundárním regionu, je 12 hodin. Proto, když zapnete CRR, RPO (cíl bodu obnovení) pro sekundární oblast je 12 hodin + doba trvání frekvence záznamu (kterou lze nastavit na minimálně 15 minut).
Obnovit jako soubory
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 ukládání 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-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 je 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. Chcete-li použít tento příkaz, zadejte výstup JSON výše, který je uložen 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 .
Note
Pokud nechcete obnovit celý řetězec, ale jenom podmnožinu souborů, postupujte podle zde uvedených kroků.
Obnovení napříč 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).
Note
- Obnovení napříč předplatnými můžete aktivovat z trezoru služby Recovery.
- 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 není podporováno.
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ý vám umožní při aktivaci obnovení mezi předplatnými poskytnout cílové předplatné jako vstup pro zdroje dat SQL nebo HANA.
Example:
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}
Next step
Related content
- Zálohujte databáze SQL Serveru na virtuálních počítačích Azure pomocí služby Azure Backup prostřednictvím rozhraní REST API.
- Obnovení databází SQL Serveru na virtuálních počítačích Azure pomocí rozhraní REST API
- Správa databází SQL Serveru na virtuálních počítačích Azure pomocí webu Azure Portal, Azure CLI, rozhraní REST API