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 az SQL-adatbázis biztonsági mentése Azure-ban CLI használatával funkciót használta az SQL-adatbázisához, 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ésű adatbázis/elem neve: sqldatabase;mssqlserver;master.
  • Erőforrások a westus régióban.

A ma támogatott biztonsági mentési és visszaállítási forgatókönyvek megtekintéséhez tekintse meg a támogatási mátrixot. Gyakori kérdésekért tekintse meg a gyakori kérdéseket.

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.

Megjegyzé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 lévő SQL-példányra vagy másik régióra állíthatja vissza, ha a régióközi visszaállítás engedélyezve van a tárolóban.
  • A célpéldányt ugyanazzal a tárolóval kell regisztrálni, mint a forrást, kivéve a régiók közötti visszaállítás és az előfizetések közötti visszaállítás során. .

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 (akár másodperc pontossággal) logikális 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.
  • Egy adott teljes vagy különbözeti biztonsági mentés használatával állítsa vissza az adatok egy adott helyreállítási pontra.

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.

Megjegyzé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.

Adatok visszaállítása 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 azt az adatbázist állítja vissza, amely ugyanazon az SQL-kiszolgálón van, amelyet védett, a(z) testSQLVM nevű kiszolgálón.
  • --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, amely egy recoveryconfig.jsonnevű fájlba van mentve.

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-yyyyy-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, amely egy recoveryconfig.jsonnevű fájlba van mentve.

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

Megjegyzé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-yyyyy-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 mentett.

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.

Megjegyzé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íthat bármely előfizetésbe és tárolóba a bérlőjén belül, ha rendelkezésre állnak a 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).

Megjegyzé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