Aracılığıyla paylaş


Azure CLI kullanarak Azure VM'deki SQL veritabanlarını geri yükleme

Azure CLI, Komut Satırı'ndan veya betikler aracılığıyla Azure kaynakları oluşturmak ve yönetmek için kullanılır. Bu makalede, Azure CLI kullanarak Bir Azure VM'de yedeklenmiş SQL veritabanının nasıl geri yükleneceği açıklanır. Bu eylemleri Azure portalını kullanarak da gerçekleştirebilirsiniz.

CLI komutlarını çalıştırmak için Azure Cloud Shell'i kullanın.

Bu makalede, Azure Backup kullanılarak yedeklenen Azure VM üzerinde çalışan bir SQL veritabanınız olduğu varsayılır. SQL veritabanınızı yedeklemek için CLI kullanarak Azure'da bir SQL veritabanını yedeklemeyi kullandıysanız aşağıdaki kaynakları kullanıyorsunuz demektir:

  • adlı SQLResourceGroupbir kaynak grubu.
  • adlı SQLVaultbir kasa.
  • adlı VMAppContainer;Compute;SQLResourceGroup;testSQLVMkorumalı kapsayıcı.
  • Yedeklenen veritabanı/adlı sqldatabase;mssqlserver;masteröğe.
  • westus Bölgedeki kaynaklar.

Yedeklenen veritabanı için geri yükleme noktalarını görüntüleme

Bir veritabanının tüm kurtarma noktalarının listesini görüntülemek için az backup recoverypoint list komutunu şu şekilde kullanın:

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

Kurtarma noktalarının listesi şu şekilde görünür:

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

Yukarıdaki listede üç kurtarma noktası vardır: her birinin tam, değişiklik ve günlük yedeklemesi için.

Not

Ayrıca, az backup recoverypoint show-log-chain komutunu kullanarak her kesintisiz günlük yedekleme zincirinin başlangıç ve bitiş noktalarını görüntüleyebilirsiniz.

Veritabanını geri yükleme önkoşulları

Veritabanını geri yüklemeden önce aşağıdaki önkoşulların karşılandığından emin olun:

  • Veritabanını yalnızca aynı bölgedeki bir SQL örneğine geri yükleyebilirsiniz.
  • Hedef örneğin kaynakla aynı kasaya kaydedilmesi gerekir.

Veritabanını geri yükleme

Azure Backup, Azure VM'lerinde çalışan SQL veritabanlarını şu şekilde geri yükleyebilir:

  • Günlük yedeklemelerini kullanarak belirli bir tarih veya saate (ikinciye) geri yükleyin. Azure Backup, seçilen zamana göre geri yüklemek için gereken uygun tam, değişiklik yedeklemelerini ve günlük yedeklemeleri zincirini otomatik olarak belirler.
  • Belirli bir kurtarma noktasına geri yüklemek için belirli bir tam veya değişiklik yedeğine geri yükleme.

Veritabanını geri yüklemek için, girişlerden biri olarak kurtarma yapılandırması nesnesi gerektiren az restore restore-azurewl komutunu kullanın. Az backup recoveryconfig show komutunu kullanarak bu nesneyi oluşturabilirsiniz. Kurtarma yapılandırması nesnesi, geri yükleme gerçekleştirmek için tüm ayrıntıları içerir. Bunlardan biri geri yükleme modudur: OriginalWorkloadRestore veya AlternateWorkloadRestore.

Not

OriginalWorkloadRestore: Verileri özgün kaynakla aynı SQL örneğine geri yükler. Bu seçenek özgün veritabanının üzerine yazar. AlternateWorkloadRestore: Veritabanını alternatif bir konuma geri yükler ve özgün kaynak veritabanını saklar.

Alternatif konuma geri yükleme

Veritabanını alternatif bir konuma geri yüklemek için geri yükleme modu olarak AlternateWorkloadRestore kullanın. Daha sonra, önceki bir zaman noktası veya önceki geri yükleme noktaları olabilecek geri yükleme noktasını seçmeniz gerekir.

Önceki bir geri yükleme noktasına geri yüklemeye devam edelim. Veritabanı için geri yükleme noktalarının listesini görüntüleyin ve geri yüklemek istediğiniz noktayı seçin. Burada, geri yükleme noktasını 7660777527047692711 adıyla birlikte kullanalım.

Yukarıdaki geri yükleme noktası adı ve geri yükleme modu ile az backup recoveryconfig show komutunu kullanarak kurtarma yapılandırması nesnesini oluşturun. Bu komutta kalan parametreleri denetleyin:

  • --target-item-name: Geri yüklenen veritabanı tarafından kullanılacak ad. Bu senaryoda restored_database adını kullandık.
  • --target-server-name: Kurtarma Hizmetleri kasasına başarıyla kaydedilen ve geri yüklenecek veritabanıyla aynı bölgede kalan bir SQL sunucusunun adı. Burada veritabanını, testSQLVM adlı koruduğun SQL sunucusuna geri yüklüyorsunuz.
  • --target-server-type: SQL veritabanlarının geri yüklenmesi için SQLInstance kullanmanız gerekir.

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

Yukarıdaki sorguya verilen yanıt, şu şekilde görünen bir kurtarma yapılandırma nesnesidir:

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

Şimdi veritabanını geri yüklemek için az restore-azurewl komutunu çalıştırın. Bu komutu kullanmak için, recoveryconfig.json adlı bir dosyaya kaydedilen yukarıdaki JSON çıkışını girin.

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

Çıkış şu şekilde görünür:

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

Yanıt size iş adını sağlar. az backup job show komutunu kullanarak iş durumunu izlemek için bu iş adını kullanabilirsiniz.

Geri yükleme ve üzerine yazma

Özgün konuma geri yüklemek için, geri yükleme modu olarak OriginalWorkloadRestore kullanın. Daha sonra önceki bir zaman noktası veya önceki geri yükleme noktalarından herhangi biri olabilecek geri yükleme noktasını seçmeniz gerekir.

Örnek olarak, geri yüklemek için önceki "28-11-2019-09:53:00" noktasını seçelim. Bu geri yükleme noktasını şu biçimlerde sağlayabilirsiniz: dd-mm-yy, dd-mm-yyyy-hh:mm:ss. Geri yüklemek için geçerli bir zaman noktası seçmek için, kesintisiz günlük zinciri yedekleme aralıklarını listeleyen az backup recoverypoint show-log-chain komutunu kullanın.

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

Yukarıdaki sorguya verilen yanıt, şu şekilde görünen bir kurtarma yapılandırma nesnesidir:

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

Şimdi veritabanını geri yüklemek için az restore-azurewl komutunu çalıştırın. Bu komutu kullanmak için, recoveryconfig.json adlı bir dosyaya kaydedilen yukarıdaki JSON çıkışını girin.

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

Çıkış şu şekilde görünür:

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

Yanıt size iş adını sağlar. az backup job show komutunu kullanarak iş durumunu izlemek için bu iş adını kullanabilirsiniz.

İkincil bölgeye geri yükleme

Veritabanını ikincil bölgeye geri yüklemek için, geri yükleme yapılandırmasında ikincil bölgede bulunan bir hedef kasa ve sunucu belirtin.

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

Yanıt, şu şekilde görünen bir kurtarma yapılandırma nesnesidir:

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

Az restore restore-azurewl komutunda bu kurtarma yapılandırmasını kullanın. --use-secondary-region Veritabanını ikincil bölgeye geri yüklemek için bayrağını seçin.

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

Çıkış şu şekilde görünür:

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

Not

İkincil bölgede kullanılabilir yedekleme verilerinin RPO değeri 12 saattir. Bu nedenle, CRR'yi açtığınızda, ikincil bölgenin RPO'sunun 12 saat + günlük sıklığı süresi (en az 15 dakika olarak ayarlanabilir) olur.

Dosya olarak geri yükleme

Yedekleme verilerini veritabanı yerine dosya olarak geri yüklemek için geri yükleme modu olarak RestoreAsFiles kullanın. Ardından, önceki bir zaman noktası veya önceki geri yükleme noktaları olabilecek geri yükleme noktasını seçin. Dosyalar belirtilen yola bırakıldıktan sonra, bu dosyaları veritabanı olarak geri yüklemek istediğiniz herhangi bir SQL makinesine götürebilirsiniz. Bu dosyaları herhangi bir makineye taşıyabildiğiniz için artık verileri abonelikler ve bölgeler arasında geri yükleyebilirsiniz.

Burada, geri yüklemek için önceki belirli 28-11-2019-09:53:00 bir noktayı ve aynı SQL sunucusundaki yedekleme dosyalarının /home/sql/restoreasfiles dökümünü almak için konumu seçin. Bu geri yükleme noktasını şu biçimlerden birinde sağlayabilirsiniz: dd-mm-yyyy veya dd-mm-yyyy-hh:mm:ss. Geri yüklemek için geçerli bir zaman noktası seçmek için, kesintisiz günlük zinciri yedekleme aralıklarını listeleyen az backup recoverypoint show-log-chain komutunu kullanın.

Yukarıdaki geri yükleme noktası adı ve geri yükleme modu ile az backup recoveryconfig show komutunu kullanarak kurtarma yapılandırması nesnesini oluşturun. Bu komutta kalan parametrelerin her birini denetleyin:

  • --target-container-name: Kurtarma Hizmetleri kasasına başarıyla kaydedilen ve geri yüklenecek veritabanıyla aynı bölgede bulunan bir SQL sunucusunun adı. Veritabanını dosya olarak, koruduğun hxehost adlı SQL sunucusuna geri yükleyelim.
  • --rp-name: Belirli bir noktaya geri yükleme için geri yükleme noktası adı DefaultRangeRecoveryPoint'tir.
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

Yukarıdaki sorguya verilen yanıt şu şekilde görünen bir kurtarma yapılandırma nesnesidir:

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

Şimdi veritabanını dosyalar olarak geri yüklemek için az restore restore-azurewl komutunu çalıştırın. Bu komutu kullanmak için yukarıdaki recoveryconfig.json adlı dosyaya kaydedilen JSON çıkışını girin.

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

Çıkış şu şekilde görünür:

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

Yanıt size iş adını sağlar. az backup job show komutunu kullanarak iş durumunu izlemek için bu iş adını kullanabilirsiniz.

Not

Zincirin tamamını geri yüklemek istemiyorsanız ancak dosyaların yalnızca bir alt kümesini geri yüklemek istiyorsanız, burada belgelendiği gibi adımları izleyin.

Abonelikler Arası Geri Yükleme

Abonelikler Arası Geri Yükleme (CSR) ile, geri yükleme izinleri varsa kiracınızın altındaki herhangi bir aboneliğe ve herhangi bir kasaya geri yükleme esnekliğine sahip olursunuz. CsR varsayılan olarak tüm Kurtarma Hizmetleri kasalarında (mevcut ve yeni oluşturulan kasalar) etkinleştirilir.

Not

  • Kurtarma Hizmetleri kasasından Abonelikler Arası Geri Yükleme'yi tetikleyebilirsiniz.
  • CSR yalnızca akış tabanlı yedekleme için desteklenir ve anlık görüntü tabanlı yedekleme için desteklenmez.
  • CSR ile Bölgeler Arası Geri Yükleme (CRR) desteklenmez.
az backup vault create

Kasa oluşturma ve güncelleştirme sırasında kasanın CSR durumunu ayarlamanıza olanak tanıyan parametreyi cross-subscription-restore-state ekleyin.

az backup recoveryconfig show

SQL veya HANA veri kaynakları için Çapraz Abonelik Geri Yükleme'yi tetiklerken giriş olarak hedef aboneliği sağlamanıza olanak tanıyan parametreyi --target-subscription-id ekleyin.

Örnek:

   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}

Sonraki adım

  • Azure CLI kullanılarak yedeklenen SQL veritabanlarını yönetin.