Share via


SQL-adatbázisok visszaállítása Azure-beli virtuális gépen az Azure CLI használatával

Az \Azure CLI-vel Azure-erőforrások hozhatók létre és kezelhetők a parancssorból vagy szkripteken keresztül. Ez a cikk azt ismerteti, hogyan állíthat vissza egy 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 a Azure Portal is végrehajthatja.

Cli-parancsok futtatása az Azure Cloud Shell használatával.

Ebből a cikkből megtudhatja, hogyan:

  • Biztonsági mentési adatbázis visszaállítási pontjainak megtekintése
  • Adatbázis helyreállítása

Ez a cikk feltételezi, hogy egy Azure-beli virtuális gépen futó SQL-adatbázisról van szó, amely biztonsági másolatot készít a Azure Backup használatával. Ha az SQL-adatbázis biztonsági másolatát az Azure-ban a PARANCSSOR használatával használta az SQL-adatbázis biztonsági mentéséhez, akkor a következő erőforrásokat használja:

  • Egy nevű SQLResourceGrouperőforráscsoport.
  • Egy nevű SQLVaulttároló.
  • A nevű VMAppContainer;Compute;SQLResourceGroup;testSQLVMvédett tároló.
  • A nevű biztonsági mentési adatbázis/elem.sqldatabase;mssqlserver;master
  • A régió erőforrásai westus .

Megjegyzés

A támogatott konfigurációkkal és forgatókönyvekkel kapcsolatos további információkért tekintse meg az SQL backup támogatási mátrixát .

Biztonsági mentési adatbázis visszaállítási pontjainak megtekintése

Az adatbázis összes helyreállítási pontjá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: mindegyiket a teljes, a különbségi és a napló biztonsági mentéséhez.

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.

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

Azure Backup az Azure-beli virtuális gépeken futó SQL-adatbázisokat a következőképpen állíthatja vissza:

  • Visszaállítás egy adott dátumra vagy időpontra (a másodikra) naplóbeli biztonsági másolatok használatával. Azure Backup automatikusan meghatározza a megfelelő teljes, különbségi biztonsági mentéseket és a naplók 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önbségi 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 objektumra van szükség 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 tartalmazza a visszaállítás végrehajtásához szükséges összes részletet. Ezek egyike a visszaállítási mód – OriginalWorkloadRestore vagy AlternateWorkloadRestore.

Megjegyzés

OriginalWorkloadRestore: Az adatokat ugyanarra az SQL-példányra állítja vissza, 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 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 a 7660777527047692711 névvel.

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 a visszaállítandó adatbázisnak megfelelő régióban marad. Itt az adatbázist ugyanarra az SQL-kiszolgálóra állítja vissza, 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 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 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ármelyik korábbi visszaállítási pont.

Tegyük fel például, hogy a visszaállításhoz válassza ki az előző időpontot (28-11-2019-09:53:00). Ezt a visszaállítási pontot a következő formátumokban adhatja meg: dd-mm-yyyy, dd-mm-yyyy-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 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

Ha egy adatbázist vissza szeretne állítani a másodlagos régióba, adjon meg egy céltartót és 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": [],
}

Használja ezt a helyreállítási konfigurációt az az restore-azurewl paranccsal. 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 minimum 15 percre állítható).

Visszaállítás fájlokként

Ha adatbázis helyett fájlként szeretné visszaállítani a biztonsági mentési adatokat, használja a RestoreAsFiles visszaállítási módot. 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, most már visszaállíthatja az adatokat az előfizetések és régiók között.

Itt válassza ki az előző visszaállítási időpontot és a biztonsági mentési fájlok memóriaképének helyét, mint /home/sql/restoreasfiles ugyanazon az SQL-kiszolgálón28-11-2019-09:53:00. Ezt a visszaállítási pontot a következő formátumok egyikében adhatja meg: dd-mm-yyyy vagy dd-mm-yyyy-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: Annak az SQL-kiszolgálónak a 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. Állítsuk vissza az adatbázist fájlként ugyanarra az SQL-kiszolgálóra, 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 meg, 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.

Megjegyzés

Ha nem szeretné visszaállítani a teljes láncot, hanem csak a fájlok egy részét, kövesse az itt leírt 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 állíthat vissza bármilyen előfizetést és tárolót a bérlője alatt, 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).

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éshez támogatott, és nem támogatott pillanatkép-alapú biztonsági mentéshez.
  • A CSR-sel 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ések