Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 Microsoft Azure.
Gunakan Azure Cloud Shell untuk menjalankan perintah CLI.
Artikel ini mengasumsikan Anda memiliki database SQL yang beroperasi di mesin virtual Azure yang dicadangkan dengan menggunakan Azure Backup. Jika Anda telah menggunakan Cadangkan database SQL di Azure menggunakan CLI untuk mencadangkan database SQL Anda, maka Anda menggunakan sumber daya berikut:
- Grup sumber daya bernama
SQLResourceGroup. - Vault bernama
SQLVault. - Kontainer terlindungi bernama
VMAppContainer;Compute;SQLResourceGroup;testSQLVM. - Database/item yang sudah dicadangkan bernama
sqldatabase;mssqlserver;master. - Sumber daya di wilayah tersebut
westus.
Catatan
Lihat matriks dukungan cadangan SQL untuk mengetahui selengkapnya tentang konfigurasi dan skenario yang didukung.
Lihat 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 putus, 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 yang sama dengan sumber aslinya. Opsi ini menggantikan dan 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 lainnya yang sudah ada.
Mari kita pulihkan ke titik pemulihan sebelumnya. Tampilkan 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 sesuai database yang akan dipulihkan. Di sini, Anda memulihkan database ke server SQL yang sama dengan yang telah Anda lindungi, bernama testSQLVM.
- --target-server-type: Untuk pemulihan 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
Tanggapan memberi Anda nama tugas. Anda dapat menggunakan nama pekerjaan ini untuk melacak status pekerjaan menggunakan perintah az backup job show .
Memulihkan dan mengganti
Untuk memulihkan ke lokasi asli, gunakan OriginalWorkloadRestore sebagai mode pemulihan. Anda kemudian harus memilih titik pemulihan, yang mungkin berupa titik waktu sebelumnya atau salah satu dari 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 dipulihkan, gunakan perintah az backup recoverypoint show-log-chain , yang mencantumkan interval cadangan 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
Tanggapan memberi Anda nama tugas. 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 tertentu sebelumnya atau salah satu titik pemulihan sebelumnya lainnya. 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 dipulihkan, gunakan perintah az backup recoverypoint show-log-chain , yang mencantumkan interval cadangan 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 sesuai database yang akan dipulihkan. Mari kita pulihkan database sebagai file ke server SQL yang sama dengan yang telah Anda lindungi, bernama hxehost.
- --rp-name: Untuk pemulihan point-in-time, 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"
}
Tanggapan memberi Anda nama tugas. 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 subset file, ikuti langkah-langkah seperti yang didokumentasikan di sini.
Pemulihan Lintas Langganan
Dengan Pemulihan Langganan Silang (CSR), Anda memiliki fleksibilitas untuk memulihkan ke langganan dan vault mana 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 Layanan Pemulihan vault.
- 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
Konten terkait
- Cadangkan database server SQL di Azure VM menggunakan Azure Backup melalui REST API.
- Pulihkan database SQL Server di Azure VM dengan REST API.
- Mengelola database server SQL di Azure VM dengan portal Microsoft Azure, Azure CLI, REST API.