Memulihkan kumpulan SQL khusus yang ada

Dalam artikel ini, Anda mempelajari cara memulihkan kumpulan SQL khusus yang ada di Azure Synapse Analytics menggunakan portal Microsoft Azure, Synapse Studio, dan PowerShell. Artikel ini berlaku untuk pemulihan dan pemulihan geografis.

Catatan

Panduan ini hanya untuk kumpulan SQL khusus di ruang kerja Azure Synapse. Untuk kumpulan SQL khusus mandiri (sebelumnya SQL DW), lihat Memulihkan kumpulan SQL khusus yang ada (sebelumnya SQL DW).

Memulihkan kumpulan SQL khusus yang ada melalui Synapse Studio

  1. Masuk ke portal Azure.

  2. Navigasikan ke ruang kerja Azure Synapse Anda.

  3. Di bawah Memulai ->Buka Synapse Studio, pilih Buka. Screenshot from Synapse Studio, showing the Open Synapse Studio box and Open link.

  4. Di panel navigasi sebelah kiri, pilih Data.

  5. Pilih Kelola kumpulan.

  6. Pilih + Baru untuk membuat kumpulan SQL khusus baru di ruang kerja Azure Synapse Analytics.

  7. Di tab Pengaturan Tambahan, pilih Titik Pemulihan untuk memulihkannya.

    Jika Anda ingin melakukan pemulihan geografis, pilih ruang kerja dan kumpulan SQL khusus yang ingin Anda pulihkan.

  8. Pilih Titik Pemulihan Otomatis atau Titik Pemulihan yang Ditentukan Pengguna.

    Screenshot from the Azure portal, Create SQL pool page, Additional settings page. For Restore point type, the Automatic restore points radio button is selected.

    • Jika kumpulan SQL khusus tidak memiliki titik pemulihan otomatis, tunggu beberapa jam atau buat titik pemulihan yang ditentukan pengguna sebelum memulihkan. Untuk Titik Pemulihan yang Ditentukan Pengguna, pilih titik pemulihan yang sudah ada atau buat titik pemulihan baru.

    • Jika Anda ingin memulihkan kumpulan SQL khusus dari ruang kerja yang berbeda, pilih Kumpulan SQL khusus baru dari ruang kerja Anda saat ini. Di bawah tab Pengaturan tambahan, temukan opsi Gunakan data yang sudah ada dan pilih titik Pemulihan. Seperti yang ditunjukkan pada cuplikan layar di atas, Anda kemudian dapat memilih nama Server atau ruang kerja tempat Anda dapat memulihkan.

    • Jika Anda memulihkan cadangan geografis, pilih ruang kerja yang terletak di wilayah sumber dan kumpulan SQL khusus yang ingin Anda pulihkan.

    Catatan

    Anda tidak dapat melakukan pemulihan kumpulan SQL di tempat dengan nama yang sama dengan kumpulan yang ada. Terlepas dari kumpulan SQL berada di ruang kerja yang sama atau ruang kerja yang berbeda.

  9. Pilih Tinjau + Buat.

Memulihkan kumpulan SQL khusus yang ada melalui portal Azure

  1. Masuk ke portal Azure.

  2. Arahkan ke kumpulan SQL khusus yang ingin Anda pulihkan.

  3. Di bagian atas halaman Ringkasan, pilih Pulihkan.

    Screenshot from the Azure portal, showing the SQL pool overview page. The Restore button is highlighted.

  4. Pilih Titik Pemulihan Otomatis atau Titik Pemulihan yang Ditentukan Pengguna.

    Jika kumpulan SQL khusus tidak memiliki titik pemulihan otomatis, tunggu beberapa jam atau buat titik pemulihan yang ditentukan pengguna sebelum memulihkan.

    Jika Anda ingin melakukan pemulihan geografis, pilih ruang kerja dan kumpulan SQL khusus yang ingin Anda pulihkan.

  5. Pilih Tinjau + Buat.

Memulihkan kumpulan SQL khusus yang ada melalui PowerShell

  1. Buka Terminal PowerShell.

  2. Sambungkan ke akun Azure Anda dan cantumkan semua langganan yang terkait dengan akun Anda.

  3. Pilih langganan berisi kumpulan SQL yang akan dipulihkan.

  4. Cantumkan titik pemulihan untuk kumpulan SQL khusus.

  5. Pilih titik pemulihan yang diinginkan menggunakan RestorePointCreationDate.

  6. Pulihkan kumpulan SQL khusus ke titik pemulihan yang diinginkan menggunakan cmdlet PowerShell Restore-AzSynapseSqlPool.

  7. Verifikasi bahwa kumpulan SQL khusus yang dipulihkan berstatus online.

    
    $SubscriptionName="<YourSubscriptionName>"
    $ResourceGroupName="<YourResourceGroupName>"
    $WorkspaceName="<YourWorkspaceNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
    #$TargetResourceGroupName="<YourTargetResourceGroupName>" # uncomment to restore to a different workspace.
    #$TargetWorkspaceName="<YourtargetWorkspaceNameWithoutURLSuffixSeeNote>"  
    $SQLPoolName="<YourDatabaseName>"
    $NewSQLPoolName="<YourDatabaseName>"
    
    Connect-AzAccount
    Get-AzSubscription
    Select-AzSubscription -SubscriptionName $SubscriptionName
    
    # list all restore points
    Get-AzSynapseSqlPoolRestorePoint -ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName -Name $SQLPoolName
    # Pick desired restore point using RestorePointCreationDate "xx/xx/xxxx xx:xx:xx xx"
    $PointInTime="<RestorePointCreationDate>"
    
    # Get the specific SQL pool to restore
    $SQLPool = Get-AzSynapseSqlPool -ResourceGroupName $ResourceGroupName -WorkspaceName $WorkspaceName -Name $SQLPoolName
    # Transform Synapse SQL pool resource ID to SQL database ID because currently the restore command only accepts the SQL database ID format.
    $DatabaseID = $SQLPool.Id -replace "Microsoft.Synapse", "Microsoft.Sql" `
        -replace "workspaces", "servers" `
        -replace "sqlPools", "databases"
    
    # Restore database from a restore point
    $RestoredDatabase = Restore-AzSynapseSqlPool –FromRestorePoint -RestorePoint $PointInTime -ResourceGroupName $SQLPool.ResourceGroupName `
        -WorkspaceName $SQLPool.WorkspaceName -TargetSqlPoolName $NewSQLPoolName –ResourceId $DatabaseID -PerformanceLevel DW100c
    
    # Use the following command to restore to a different workspace
    #$TargetResourceGroupName = $SQLPool.ResourceGroupName # for restoring to different workspace in same resourcegroup 
    #$RestoredDatabase = Restore-AzSynapseSqlPool –FromRestorePoint -RestorePoint $PointInTime -ResourceGroupName $TargetResourceGroupName `
    #    -WorkspaceName $TargetWorkspaceName -TargetSqlPoolName $NewSQLPoolName –ResourceId $DatabaseID -PerformanceLevel DW100c
    
    # Verify the status of restored database
    $RestoredDatabase.status
    

Memulihkan kumpulan SQL khusus yang ada ke langganan lain melalui PowerShell

Saat melakukan pemulihan lintas langganan, kumpulan SQL khusus di ruang kerja Azure Synapse hanya dapat memulihkan langsung ke kumpulan SQL khusus mandiri (sebelumnya SQL DW). Jika diperlukan untuk memulihkan kumpulan SQL khusus di ruang kerja Azure Synapse ke ruang kerja di langganan tujuan, perlu dilakukan langkah pemulihan tambahan.

Contoh PowerShell berikut mirip dengan sebelumnya, namun ada tiga perbedaan utama:

  • Setelah mengambil objek Kumpulan SQL yang akan dipulihkan, konteks langganan perlu dialihkan ke nama langganan tujuan (atau target).
  • Saat melakukan pemulihan, gunakan modul Az.Sql alih-alih modul Az.Synapse.
  • Kode sampel di bawah ini memiliki langkah-langkah tambahan untuk memulihkan ke ruang kerja Azure Synapse di langganan tujuan. Hapus komentar perintah PowerShell seperti yang dijelaskan dalam sampel.

Langkah-langkah:

  1. Buka Terminal PowerShell.

  2. Perbarui Modul Az.Sql ke 3.8.0 (atau lebih tinggi) jika pada versi yang lebih lama menggunakan Update-Module. Jika tidak, itu akan menyebabkan kegagalan. Untuk memvalidasi versi Anda melalui PowerShell:

    foreach ($i in (get-module -ListAvailable | ?{$_.name -eq 'az.sql'}).Version) { $version = [string]$i.Major + "." + [string]$i.Minor; if ($version -gt 3.7) {write-host "Az.Sql version $version installed. Prequisite met."} else {update-module az.sql} }
    
  3. Sambungkan ke akun Azure Anda dan cantumkan semua langganan yang terkait dengan akun Anda.

  4. Pilih langganan berisi kumpulan SQL yang akan dipulihkan.

  5. Cantumkan titik pemulihan untuk kumpulan SQL khusus.

  6. Pilih titik pemulihan yang diinginkan menggunakan RestorePointCreationDate.

  7. Pilih langganan tujuan tempat kumpulan SQL harus dipulihkan.

  8. Pulihkan kumpulan SQL khusus ke titik pemulihan yang diinginkan menggunakan cmdlet PowerShell Restore-AzSqlDatabase.

  9. Verifikasi bahwa kumpulan SQL khusus (sebelumnya SQL DW) yang dipulihkan berstatus online.

  10. Jika tujuan yang diinginkan adalah Ruang Kerja Synapse, batalkan komentar kode untuk melakukan langkah pemulihan tambahan.

    1. Buat titik pemulihan untuk gudang data yang baru dibuat.

    2. Ambil titik pemulihan terakhir yang dibuat menggunakan sintaksis Select -Last 1.

    3. Lakukan pemulihan ke ruang kerja Azure Synapse yang diinginkan.

      $SourceSubscriptionName="<YourSubscriptionName>"
      $SourceResourceGroupName="<YourResourceGroupName>"
      $SourceWorkspaceName="<YourServerNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
      $SourceSQLPoolName="<YourDatabaseName>"
      $TargetSubscriptionName="<YourTargetSubscriptionName>"
      $TargetResourceGroupName="<YourTargetResourceGroupName>"
      $TargetServerName="<YourTargetServerNameWithoutURLSuffixSeeNote>"  # Without sql.azuresynapse.net
      $TargetDatabaseName="<YourDatabaseName>"
      #$TargetWorkspaceName="<YourTargetWorkspaceName>" # uncomment if restore to an Azure Synapse workspace is required
      
      # Update Az.Sql module to the latest version (3.8.0 or above)
      # Update-Module -Name Az.Sql -RequiredVersion 3.8.0
      
      Connect-AzAccount
      Get-AzSubscription
      Select-AzSubscription -SubscriptionName $SourceSubscriptionName
      
      # list all restore points
      Get-AzSynapseSqlPoolRestorePoint -ResourceGroupName $SourceResourceGroupName -WorkspaceName $SourceWorkspaceName -Name $SourceSQLPoolName
      # Pick desired restore point using RestorePointCreationDate "xx/xx/xxxx xx:xx:xx xx"
      $PointInTime="<RestorePointCreationDate>"
      
      # Get the specific SQL pool to restore
      $SQLPool = Get-AzSynapseSqlPool -ResourceGroupName $SourceResourceGroupName -WorkspaceName $SourceWorkspaceName -Name $SourceSQLPoolName
      # Transform Synapse SQL pool resource ID to SQL database ID because currently the restore command only accepts the SQL database ID format.
      $DatabaseID = $SQLPool.Id -replace "Microsoft.Synapse", "Microsoft.Sql" `
          -replace "workspaces", "servers" `
          -replace "sqlPools", "databases"
      
      # Switch context to the destination subscription
      Select-AzSubscription -SubscriptionName $TargetSubscriptionName
      
      # Restore database from a desired restore point of the source database to the target server in the desired subscription
      $RestoredDatabase = Restore-AzSqlDatabase –FromPointInTimeBackup –PointInTime $PointInTime -ResourceGroupName $TargetResourceGroupName `
          -ServerName $TargetServerName -TargetDatabaseName $TargetDatabaseName –ResourceId $DatabaseID
      
      # Verify the status of restored database
      $RestoredDatabase.status
      
      # uncomment below cmdlets to perform one more restore to push the SQL Pool to an existing workspace in the destination subscription
      # # Create restore point
      # New-AzSqlDatabaseRestorePoint -ResourceGroupName $RestoredDatabase.ResourceGroupName -ServerName $RestoredDatabase.ServerName `
      #     -DatabaseName $RestoredDatabase.DatabaseName -RestorePointLabel "UD-001"
      # # Gets the last restore point of the sql dw (will use the RestorePointCreationDate property)
      # $RestorePoint = Get-AzSqlDatabaseRestorePoint -ResourceGroupName $RestoredDatabase.ResourceGroupName -ServerName $RestoredDatabase.ServerName `
      #     -DatabaseName $RestoredDatabase.DatabaseName | Select -Last 1
      # # Restore to destination synapse workspace
      # $FinalRestore = Restore-AzSynapseSqlPool –FromRestorePoint -RestorePoint $RestorePoint.RestorePointCreationDate -ResourceGroupName $TargetResourceGroupName `
      #     -WorkspaceName $TargetWorkspaceName -TargetSqlPoolName $TargetDatabaseName –ResourceId $RestoredDatabase.ResourceID -PerformanceLevel DW100c
      
      

Pemecahan masalah

Operasi pemulihan dapat mengakibatkan kegagalan penyebaran berdasarkan pengecualian "RequestTimeout".

Screenshot from resource group deployments dialog of a timeout exception.

Batas waktu ini dapat diabaikan. Tinjau halaman kumpulan SQL khusus di portal Azure dan mungkin masih memiliki status "Memulihkan" dan akhirnya akan beralih ke "Online".

Screenshot of SQL pool dialog with the status that shows restoring.