SQL-adatbázisok visszaállítása Azure-beli virtuális gépen az Azure CLI használatával
Az Azure CLI használatával Azure-erőforrásokat hozhat létre és kezelhet a parancssorból vagy szkripteken keresztül. Ez a cikk azt ismerteti, hogyan állíthat vissza biztonsági másolattal rendelkező SQL-adatbázist egy Azure-beli virtuális gépen az Azure CLI használatával. Ezeket a műveleteket az Azure Portalon is végrehajthatja.
Cli-parancsok futtatásához használja az Azure Cloud Shellt .
Ez a cikk feltételezi, hogy egy Azure-beli virtuális gépen futó SQL-adatbázisról van szó, amely az Azure Backup használatával van biztonsági másolatban. Ha sql-adatbázis biztonsági mentését használta az Azure-ban cli használatával az SQL-adatbázis biztonsági mentéséhez, akkor a következő erőforrásokat használja:
- Egy erőforráscsoport neve
SQLResourceGroup
. - Egy tároló neve
SQLVault
. - Védett tároló neve
VMAppContainer;Compute;SQLResourceGroup;testSQLVM
. - Biztonsági mentési adatbázis/elnevezett
sqldatabase;mssqlserver;master
elem. - Erőforrások a
westus
régióban.
Feljegyzés
A támogatott konfigurációkkal és forgatókönyvekkel kapcsolatos további információkért tekintse meg az SQL biztonsági mentési támogatási mátrixát .
Biztonsági másolattal rendelkező adatbázis visszaállítási pontjainak megtekintése
Az adatbázis összes helyreállítási pontjának listájának megtekintéséhez használja az az backup recoverypoint list parancsot a következő módon:
az backup recoverypoint list --resource-group SQLResourceGroup \
--vault-name SQLVault \
--container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
--item-name sqldatabase;mssqlserver;master \
--output table
A helyreállítási pontok listája a következőképpen jelenik meg:
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
A fenti lista három helyreállítási pontot tartalmaz: mindegyik a teljes, a különbségi és a napló biztonsági mentését tartalmazza.
Feljegyzés
Az az backup recoverypoint show-log-chain paranccsal megtekintheti az összes töretlen napló biztonsági mentési láncának kezdő és végpontját is.
Az adatbázis visszaállításának előfeltételei
Az adatbázis visszaállítása előtt győződjön meg arról, hogy a következő előfeltételek teljesülnek:
- Az adatbázist csak ugyanabban a régióban található SQL-példányra állíthatja vissza.
- A célpéldányt ugyanazzal a tárolóval kell regisztrálni, mint a forrást.
Adatbázis helyreállítása
Az Azure Backup az Alábbi módon állíthatja vissza az Azure-beli virtuális gépeken futó SQL-adatbázisokat:
- Visszaállítás egy adott dátumra vagy időpontra (a másodikra) napló biztonsági másolatok használatával. Az Azure Backup automatikusan meghatározza a megfelelő teljes, különbségi biztonsági mentéseket és a napló biztonsági mentési láncát, amelyek a kiválasztott idő alapján történő visszaállításhoz szükségesek.
- Visszaállítás egy adott teljes vagy különbözeti biztonsági mentésre egy adott helyreállítási pontra való visszaállításhoz.
Adatbázis visszaállításához használja az az restore-azurewl parancsot, amelyhez egy helyreállítási konfigurációs objektum szükséges az egyik bemenetként. Ezt az objektumot az az backup recoveryconfig show paranccsal hozhatja létre. A helyreállítási konfigurációs objektum minden részletet tartalmaz a visszaállítás végrehajtásához. Ezek egyike a visszaállítási mód – OriginalWorkloadRestore vagy AlternateWorkloadRestore.
Feljegyzés
OriginalWorkloadRestore: Visszaállítja az adatokat ugyanarra az SQL-példányra, mint az eredeti forrás. Ez a beállítás felülírja az eredeti adatbázist. AlternateWorkloadRestore: Visszaállítja az adatbázist egy másik helyre, és megtartja az eredeti forrásadatbázist.
Visszaállítás másik helyre
Ha másik helyre szeretne visszaállítani egy adatbázist, használja az AlternateWorkloadRestore visszaállítási módot. Ezután ki kell választania a visszaállítási pontot, amely lehet egy korábbi időpont vagy bármely korábbi visszaállítási pont.
Folytassuk a visszaállítást egy korábbi visszaállítási pontra. Tekintse meg az adatbázis visszaállítási pontjainak listáját, és válassza ki a visszaállítani kívánt pontot. Itt használjuk a visszaállítási pontot 7660777527047692711 néven.
A fenti visszaállítási pont nevével és a visszaállítási móddal hozza létre a helyreállítási konfigurációs objektumot az az backup recoveryconfig show paranccsal. Ellenőrizze a többi paramétert ebben a parancsban:
- --target-item-name: A visszaállított adatbázis által használandó név. Ebben a forgatókönyvben a restored_database nevet használtuk.
- --target-server-name: Annak az SQL-kiszolgálónak a neve, amely sikeresen regisztrálva van egy Recovery Services-tárolóban, és ugyanaz a régió marad, mint a visszaállítandó adatbázison belül. Itt visszaállítja az adatbázist ugyanarra az SQL-kiszolgálóra, amelyet védett, testSQLVM néven.
- --target-server-type: Az SQL-adatbázisok visszaállításához az SQLInstance-t kell használnia.
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
A fenti lekérdezésre adott válasz egy helyreállítási konfigurációs objektum, amely a következőképpen jelenik meg:
{
"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": []
}
Az adatbázis visszaállításához futtassa az az restore-azurewl parancsot. A parancs használatához adja meg a fenti JSON-kimenetet, amelyet egy recoveryconfig.json nevű fájlba ment.
az backup restore restore-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--recovery-config recoveryconfig.json \
--output table
A kimenet a következőképpen jelenik meg:
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
A válasz megadja a feladat nevét. Ezzel a feladatnévvel nyomon követheti a feladat állapotát az az backup job show paranccsal.
Visszaállítás és felülírás
Az eredeti helyre való visszaállításhoz használja az OriginalWorkloadRestore-t visszaállítási módként. Ezután ki kell választania a visszaállítási pontot, amely lehet egy korábbi időpont vagy az előző visszaállítási pontok bármelyike.
Tegyük fel például, hogy az előző időpontban lévő "28-11-2019-09:53:00" időpontot választjuk a visszaállításhoz. Ezt a visszaállítási pontot a következő formátumokban adhatja meg: dd-mm-yyyyy, dd-mm-yyy-hh:mm:ss. Ha érvényes időpontot szeretne választani a visszaállításhoz, használja az az backup recoverypoint show-log-chain parancsot, amely felsorolja a naplólánc töretlen biztonsági mentéseinek időközeit.
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
A fenti lekérdezésre adott válasz egy helyreállítási konfigurációs objektum, amely a következőképpen jelenik meg:
{
"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"
}
Az adatbázis visszaállításához futtassa az az restore-azurewl parancsot. A parancs használatához adja meg a fenti JSON-kimenetet, amelyet egy recoveryconfig.json nevű fájlba ment.
az backup restore restore-azurewl --resource-group sqlResourceGroup \
--vault-name sqlVault \
--recovery-config recoveryconfig.json \
--output table
A kimenet a következőképpen jelenik meg:
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
A válasz megadja a feladat nevét. Ezzel a feladatnévvel nyomon követheti a feladat állapotát az az backup job show paranccsal.
Visszaállítás másodlagos régióba
Az adatbázis másodlagos régióba való visszaállításához adjon meg egy céltartót és egy kiszolgálót a másodlagos régióban, a visszaállítási konfigurációban.
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
A válasz egy helyreállítási konfigurációs objektum, amely a következőképpen jelenik meg:
{
"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": [],
}
Ezt a helyreállítási konfigurációt az az restore restore-azurewl paranccsal használhatja . Válassza ki a --use-secondary-region
jelölőt az adatbázis másodlagos régióba való visszaállításához.
az backup restore restore-azurewl --resource-group SQLResourceGroup \
--vault-name testSQLVault \
--recovery-config recoveryconfig.json \
--use-secondary-region \
--output table
A kimenet a következőképpen jelenik meg:
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
Feljegyzés
A másodlagos régióban elérhető biztonsági mentési adatok RPO-ja 12 óra. Ezért a CRR bekapcsolásakor a másodlagos régió RPO-ja 12 óra + naplófrekvencia-időtartam (amely legalább 15 percre állítható be).
Visszaállítás fájlokként
A biztonsági mentési adatok adatbázis helyett fájlokként való visszaállításához használja a RestoreAsFiles szolgáltatást visszaállítási módként. Ezután válassza ki a visszaállítási pontot, amely lehet egy korábbi időpont vagy bármely korábbi visszaállítási pont. Miután a fájlokat egy megadott elérési útra dobta, ezeket a fájlokat bármely OLYAN SQL-gépre viheti, ahol adatbázisként szeretné visszaállítani őket. Mivel ezeket a fájlokat bármilyen gépre áthelyezheti, visszaállíthatja az adatokat az előfizetések és régiók között.
Itt válassza ki az előző időpontot 28-11-2019-09:53:00
a visszaállításhoz, valamint a biztonsági mentési fájlok memóriaképének helyét, mint /home/sql/restoreasfiles
ugyanazon az SQL Serveren. Ezt a visszaállítási pontot a következő formátumok egyikében adhatja meg: dd-mm-yyy vagy dd-mm-yyy-hh:mm:ss. Ha érvényes időpontot szeretne választani a visszaállításhoz, használja az az backup recoverypoint show-log-chain parancsot, amely felsorolja a naplólánc töretlen biztonsági mentéseinek időközeit.
A fenti visszaállítási pont nevével és a visszaállítási móddal hozza létre a helyreállítási konfigurációs objektumot az az backup recoveryconfig show paranccsal. Ellenőrizze a parancs többi paraméterét:
- --target-container-name: Azon SQL-kiszolgáló neve, amely sikeresen regisztrálva van egy Recovery Services-tárolóban, és ugyanabban a régióban található, mint a visszaállítandó adatbázis szerint. Állítsuk vissza az adatbázist fájlként ugyanarra az SQL Serverre, amelyet védett, hxehost néven.
- --rp-name: Időponthoz kötött visszaállítás esetén a visszaállítási pont neve 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
A fenti lekérdezésre adott válasz egy helyreállítási konfigurációs objektumot ad vissza, amely a következőképpen jelenik meg:
{
"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"
}
Az adatbázis fájlokként való visszaállításához futtassa az az restore restore-azurewl parancsot. A parancs használatához adja meg a fenti JSON-kimenetet, amelyet egy recoveryconfig.json nevű fájlba ment.
az backup restore restore-azurewl --resource-group SQLResourceGroup \
--vault-name SQLVault \
--restore-config recoveryconfig.json \
--output json
A kimenet a következőképpen jelenik meg:
{
"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"
}
A válasz megadja a feladat nevét. Ezzel a feladatnévvel nyomon követheti a feladat állapotát az az backup job show paranccsal.
Feljegyzés
Ha nem szeretné visszaállítani a teljes láncot, csak a fájlok egy részhalmazát, kövesse az itt ismertetett lépéseket.
Előfizetések közötti visszaállítás
Az előfizetések közötti visszaállítás (CSR) használatával rugalmasan visszaállíthatja a bérlője bármely előfizetését és tárolóját, ha rendelkezésre állnak visszaállítási engedélyek. Alapértelmezés szerint a CSR engedélyezve van az összes Recovery Services-tárolón (meglévő és újonnan létrehozott tárolókon).
Feljegyzés
- Az előfizetések közötti visszaállítást aktiválhatja a Recovery Services-tárolóból.
- A CSR csak streamalapú biztonsági mentés esetén támogatott, és nem támogatott pillanatkép-alapú biztonsági mentéshez.
- A csR-vel rendelkező régiók közötti visszaállítás (CRR) nem támogatott.
az backup vault create
Adja hozzá azt a paramétert cross-subscription-restore-state
, amely lehetővé teszi a tároló CSR-állapotának beállítását a tároló létrehozása és frissítése során.
az backup recoveryconfig show
Adja hozzá azt a paramétert --target-subscription-id
, amely lehetővé teszi, hogy a célelőfizetést adja meg bemenetként az SQL- vagy HANA-adatforrások előfizetések közötti visszaállításának aktiválása közben.
Példa:
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}
Következő lépés
- Az Azure CLI-vel biztonsági másolatot készítő SQL-adatbázisok kezelése.