Bagikan melalui


Memulihkan database SQL di mesin virtual Azure menggunakan Azure CLI

Azure CLI digunakan untuk membuat dan mengelola sumber daya Azure dari Baris Perintah atau melalui skrip. Artikel ini menjelaskan cara memulihkan database SQL yang dicadangkan di mesin virtual Azure menggunakan Azure CLI. Anda juga dapat melakukan tindakan ini menggunakan portal Azure.

Gunakan Azure Cloud Shell untuk menjalankan perintah CLI.

Artikel ini mengasumsikan Anda memiliki database SQL yang berjalan di mesin virtual Azure yang dicadangkan menggunakan Azure Backup. Jika Anda telah menggunakan Mencadangkan database SQL di Azure menggunakan CLI untuk mencadangkan database SQL, Anda menggunakan sumber daya berikut:

  • Grup sumber daya bernama SQLResourceGroup.
  • Vault bernama SQLVault.
  • Kontainer terlindungi bernama VMAppContainer;Compute;SQLResourceGroup;testSQLVM.
  • Database/item yang dicadangkan bernama sqldatabase;mssqlserver;master.
  • Sumber daya di wilayah tersebut westus .

Catatan

Lihat matriks dukungan pencadangan SQL untuk mengetahui lebih lanjut tentang konfigurasi dan skenario yang didukung.

Melihat titik pemulihan untuk database yang dicadangkan

Untuk melihat daftar semua titik pemulihan untuk database, gunakan perintah az backup recoverypoint list sebagai:

az backup recoverypoint list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
   --output table

Daftar titik pemulihan muncul sebagai:

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

Daftar di atas berisi tiga titik pemulihan: masing-masing untuk cadangan penuh, diferensial, dan cadangan log.

Catatan

Anda juga dapat melihat titik awal dan akhir dari setiap rantai pencadangan log yang tidak terputus, menggunakan perintah az backup recoverypoint show-log-chain.

Prasyarat untuk memulihkan database

Pastikan prasyarat berikut ini terpenuhi sebelum memulihkan database:

  • Anda dapat memulihkan database hanya ke instans SQL Server di wilayah yang sama.
  • Instans target harus didaftarkan dengan vault yang sama dengan sumbernya.

Memulihkan database

Azure Backup dapat memulihkan database SQL Server yang berjalan di mesin virtual Azure sebagai:

  • Memulihkan ke tanggal atau waktu tertentu (hingga tingkat detik) dengan menggunakan pencadangan log. Azure Backup secara otomatis menentukan pencadangan diferensial penuh yang sesuai dan rantai cadangan log yang diperlukan untuk pemulihan berdasarkan waktu yang dipilih.
  • Memulihkan ke cadangan penuh atau diferensial tertentu untuk memulihkan ke titik pemulihan tertentu.

Untuk memulihkan database, gunakan perintah az restore restore-azurewl, yang memerlukan objek konfigurasi pemulihan sebagai salah satu input. Anda dapat membuat objek ini menggunakan perintah az backup recoveryconfig show. Objek konfigurasi pemulihan berisi semua detail untuk melakukan pemulihan. Salah satunya adalah mode pemulihan – OriginalWorkloadRestore atau AlternateWorkloadRestore.

Catatan

OriginalWorkloadRestore: Memulihkan data ke instans SQL Server yang sama dengan sumber aslinya. Opsi ini menimpa database asli. AlternateWorkloadRestore - Memulihkan database ke lokasi alternatif dan menyimpan database sumber asli.

Memulihkan ke lokasi alternatif

Untuk memulihkan database ke lokasi alternatif, gunakan AlternateWorkloadRestore sebagai mode pemulihan. Anda kemudian harus memilih titik pemulihan, yang dapat berupa titik waktu sebelumnya atau titik pemulihan sebelumnya.

Mari kita lanjutkan untuk memulihkan ke titik pemulihan sebelumnya. Lihat daftar titik pemulihan untuk database dan pilih titik yang ingin Anda pulihkan. Di sini, mari kita gunakan titik pemulihan dengan nama 7660777527047692711.

Dengan nama titik pemulihan di atas dan mode pemulihan, buat objek konfigurasi pemulihan menggunakan perintah az backup recoveryconfig show. Periksa parameter yang tersisa dalam perintah ini:

  • --target-item-name: Nama yang akan digunakan oleh database yang dipulihkan. Dalam skenario ini, kami menggunakan nama restored_database.
  • --target-server-name: Nama server SQL yang berhasil didaftarkan ke vault Layanan Pemulihan dan tetap berada di wilayah yang sama dengan database yang akan dipulihkan. Di sini, Anda memulihkan database ke server SQL yang sama yang telah Anda lindungi, bernama testSQLVM.
  • --target-server-type: Untuk memulihkan database SQL, Anda harus menggunakan 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

Respons terhadap kueri di atas adalah objek konfigurasi pemulihan yang muncul sebagai:

{
  "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": []
}

Sekarang, untuk memulihkan database, jalankan perintah az restore restore-azurewl. Untuk menggunakan perintah ini, masukkan output JSON di atas yang disimpan ke file bernama recoveryconfig.json.

az backup restore restore-azurewl --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --recovery-config recoveryconfig.json \
    --output table

Outputnya muncul sebagai:

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

Respons memberi Anda nama pekerjaan. Anda dapat menggunakan nama pekerjaan ini untuk melacak status pekerjaan menggunakan perintah az backup job show.

Memulihkan dan menimpa

Untuk memulihkan ke lokasi semula, gunakan OriginalWorkloadRestore sebagai mode pemulihan. Anda kemudian harus memilih titik pemulihan, yang dapat berupa titik waktu sebelumnya atau titik pemulihan sebelumnya.

Sebagai contoh, mari kita pilih titik waktu sebelumnya "28-11-2019-09:53:00" untuk dipulihkan. Anda dapat menyediakan titik pemulihan ini dalam format berikut: dd-mm-yyyy, dd-mm-yyyy-hh:mm:ss. Untuk memilih titik waktu yang valid untuk memulihkan, gunakan perintah az backup recoverypoint show-log-chain, yang mencantumkan interval pencadangan rantai log yang tidak terputus.

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

Respons terhadap kueri di atas adalah objek konfigurasi pemulihan yang muncul sebagai:

{
  "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"
}

Sekarang, untuk memulihkan database, jalankan perintah az restore restore-azurewl. Untuk menggunakan perintah ini, masukkan output JSON di atas yang disimpan ke file bernama recoveryconfig.json.

az backup restore restore-azurewl --resource-group sqlResourceGroup \
    --vault-name sqlVault \
    --recovery-config recoveryconfig.json \
    --output table

Outputnya muncul sebagai:

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

Respons memberi Anda nama pekerjaan. Anda dapat menggunakan nama pekerjaan ini untuk melacak status pekerjaan menggunakan perintah az backup job show.

Memulihkan ke wilayah sekunder

Untuk memulihkan database ke wilayah sekunder, tentukan vault target dan server yang terletak di wilayah sekunder, dalam konfigurasi pemulihan.

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

Responsnya adalah objek konfigurasi pemulihan yang muncul sebagai:

 {
  "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": [],
}

Gunakan konfigurasi pemulihan ini dalam perintah az restore restore-azurewl. Pilih bendera --use-secondary-region untuk memulihkan database ke wilayah sekunder.

az backup restore restore-azurewl --resource-group SQLResourceGroup \
    --vault-name testSQLVault \
    --recovery-config recoveryconfig.json \
    --use-secondary-region \
    --output table

Outputnya muncul sebagai:

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

Catatan

RPO agar data cadangan tersedia di wilayah sekunder adalah 12 jam. Oleh karena itu, ketika Anda mengaktifkan CRR, RPO untuk wilayah sekunder adalah 12 jam + durasi frekuensi log (yang dapat diatur ke minimal 15 menit).

Pulihkan sebagai file

Untuk memulihkan data cadangan sebagai file, bukan database, gunakan RestoreAsFiles sebagai mode pemulihan. Kemudian pilih titik pemulihan, yang dapat berupa titik waktu sebelumnya atau titik pemulihan sebelumnya. Setelah file dibuang ke jalur yang ditentukan, Anda dapat membawa file ini ke mesin SQL mana pun tempat Anda ingin memulihkannya sebagai database. Karena Anda dapat memindahkan semua file ini ke komputer mana pun, Anda sekarang dapat memulihkan data di seluruh langganan dan wilayah.

Di sini, pilih titik waktu sebelumnya 28-11-2019-09:53:00 untuk memulihkan dan lokasi untuk membuang file cadangan sebagai /home/sql/restoreasfiles pada server SQL yang sama. Anda dapat menyediakan titik pemulihan ini dalam salah satu format berikut: dd-mm-yyyy atau dd-mm-yyyy-hh:mm:ss. Untuk memilih titik waktu yang valid untuk memulihkan, gunakan perintah az backup recoverypoint show-log-chain, yang mencantumkan interval pencadangan rantai log yang tidak terputus.

Dengan nama titik pemulihan di atas dan mode pemulihan, buat objek konfigurasi pemulihan menggunakan perintah az backup recoveryconfig show. Periksa setiap parameter yang tersisa dalam perintah ini:

  • --target-container-name: Nama server SQL yang berhasil didaftarkan ke vault Layanan Pemulihan dan ada di wilayah yang sama dengan database yang akan dipulihkan. Mari pulihkan database sebagai file ke server SQL yang sama yang telah Anda lindungi, bernama hxehost.
  • --rp-name: Untuk pemulihan titik waktu, nama titik pemulihan adalah 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

Respons terhadap kueri di atas adalah objek konfigurasi pemulihan yang muncul sebagai:

{
  "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"
}

Sekarang, untuk memulihkan database sebagai file, jalankan perintah az restore restore-azurewl. Untuk menggunakan perintah ini, masukkan output JSON di atas yang disimpan ke file bernama recoveryconfig.json.

az backup restore restore-azurewl --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --restore-config recoveryconfig.json \
    --output json

Outputnya muncul sebagai:

{
  "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"
}

Respons memberi Anda nama pekerjaan. Anda dapat menggunakan nama pekerjaan ini untuk melacak status pekerjaan menggunakan perintah az backup job show.

Catatan

Jika Anda tidak ingin memulihkan seluruh rantai tetapi hanya sebagian file, ikuti langkah-langkah seperti yang didokumentasikan di sini.

Pemulihan Lintas Langganan

Dengan Pemulihan Langganan Silang (CSR), Anda memiliki fleksibilitas memulihkan ke langganan apa pun dan brankas apa pun di bawah penyewa Anda jika izin pemulihan tersedia. Secara default, CSR diaktifkan pada semua vault Layanan Pemulihan (vault yang sudah ada dan yang baru dibuat).

Catatan

  • Anda dapat memicu Pemulihan Langganan Silang dari vault Layanan Pemulihan.
  • CSR hanya didukung untuk pencadangan berbasis streaming dan tidak didukung untuk pencadangan berbasis rekam jepret.
  • Pemulihan Lintas Regional (CRR) dengan CSR tidak didukung.
az backup vault create

Tambahkan parameter cross-subscription-restore-state yang memungkinkan Anda mengatur status CSR vault selama pembuatan dan pembaruan vault.

az backup recoveryconfig show

Tambahkan parameter --target-subscription-id yang memungkinkan Anda menyediakan langganan target sebagai input saat memicu Pemulihan Langganan Silang untuk sumber data SQL atau HANA.

Contoh:

   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}

Langkah selanjutnya