Поделиться через


Восстановление существующего выделенного пула SQL

Из этой статьи вы узнаете, как восстановить существующий выделенный пул SQL в Azure Synapse Analytics с помощью портала Azure, Synapse Studio, и PowerShell. Эта статья относится как к восстановлению, так и к геовосстановлению.

Примечание.

Это руководство предназначено только для выделенных пулов SQL в рабочих областях Azure Synapse. Сведения о автономных выделенных пулах SQL (ранее — хранилище данных SQL) см. в статье "Восстановление существующего выделенного пула SQL (ранее — хранилище данных SQL)".

Восстановление существующего выделенного пула SQL с помощью Synapse Studio

  1. Войдите на портал Azure.

  2. Перейдите к своей рабочей области Azure Synapse.

  3. Выберите Приступая к работе ->Открыть Synapse Studio и щелкните Открыть. Screenshot from Synapse Studio, showing the Open Synapse Studio box and Open link.

  4. В области навигации слева выберите Данные.

  5. Выберите Управление пулами.

  6. Нажмите кнопку + Создать, чтобы создать выделенный пул SQL в рабочей области Azure Synapse Analytics.

  7. На вкладке Дополнительные параметры выберите точку восстановления, из которой нужно выполнить восстановление.

    Если вы хотите выполнить геовосстановление, выберите рабочую область и выделенный пул SQL, который нужно восстановить.

  8. Выберите Точки автоматического восстановления или Определенные пользователем точки восстановления.

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

    • Если у выделенного пула SQL нет автоматических точек восстановления, подождите несколько часов или создайте перед восстановлением определенную пользователем точку восстановления. Для определенных пользователем точек восстановления выберите существующую или создайте новую.

    • Если вы хотите восстановить выделенный пул SQL из другой рабочей области, выберите новый выделенный пул SQL из текущей рабочей области. На вкладке "Дополнительные параметры" найдите существующие данные и выберите параметр "Точка восстановления". Как показано на снимке экрана выше, можно выбрать имя сервера или рабочей области , из которого можно восстановить.

    • При восстановлении географической резервной копии выберите рабочую область, расположенную в исходном регионе, и выделенный пул SQL, который нужно восстановить.

    Примечание.

    Восстановление пула SQL с тем же именем, что и существующий пул, невозможно выполнить на месте. Независимо от пула SQL в одной рабочей области или другой рабочей области.

  9. Выберите Review + Create (Просмотреть и создать).

Восстановление существующего выделенного пула SQL с помощью портала Azure

  1. Войдите на портал Azure.

  2. Перейдите в выделенный пул SQL, из которого требуется выполнить восстановление.

  3. В верхней области страницы Обзор выберите Восстановить.

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

  4. Выберите Точки автоматического восстановления или Определенные пользователем точки восстановления.

    Если у выделенного пула SQL нет автоматических точек восстановления, подождите несколько часов или создайте перед восстановлением определенную пользователем точку восстановления.

    Если вы хотите выполнить геовосстановление, выберите рабочую область и выделенный пул SQL, который нужно восстановить.

  5. Выберите Review + Create (Просмотреть и создать).

Восстановление существующего выделенного пула SQL с помощью PowerShell

  1. Откройте терминал Windows PowerShell.

  2. Подключитесь к своей учетной записи Azure и выведите список всех подписок, связанных с ней.

  3. Выберите подписку, содержащую пул SQL, который необходимо восстановить.

  4. Перечислите точки восстановления для выделенного пула SQL.

  5. Выберите нужные точки восстановления с помощью свойства RestorePointCreationDate.

  6. Восстановите выделенный пул SQL в нужную точку восстановления с помощью командлета PowerShell Restore-AzSynapseSqlPool.

  7. Убедитесь, что восстановленный выделенный пул SQL находится в сети.

    
    $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
    

Восстановление существующего выделенного пула SQL в другую подписку с помощью PowerShell

При восстановлении в другую подписку выделенный пул SQL из рабочей области Azure Synapse можно восстановить только напрямую в отдельный выделенный пул SQL (ранее Хранилище данных SQL). Если нужно восстановить выделенный пул SQL из рабочей области Azure Synapse в рабочую область в целевой подписке, требуется дополнительный шаг восстановления.

Следующий пример PowerShell аналогичен предыдущему, однако существует три основных отличия:

  • После получения объекта пула SQL, который необходимо восстановить, контекст подписки необходимо переключить на имя целевой подписки.
  • При восстановлении используйте модули Az.Sql вместо модулей Az.Synapse.
  • Приведенный ниже примере кода включает дополнительные действия для восстановления в рабочей области Azure Synapse в целевой подписке. Раскомментируйте нужные команды PowerShell, как описано в примере.

Пошаговые инструкции

  1. Откройте терминал Windows PowerShell.

  2. Обновите модуль Az.Sql до версии 3.8.0 (или больше), если используется Update-Moduleболее ранняя версия. В противном случае это приведет к сбоям. Чтобы проверить версию с помощью 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. Подключитесь к своей учетной записи Azure и выведите список всех подписок, связанных с ней.

  4. Выберите подписку, содержащую пул SQL, который необходимо восстановить.

  5. Перечислите точки восстановления для выделенного пула SQL.

  6. Выберите нужные точки восстановления с помощью свойства RestorePointCreationDate.

  7. Выберите целевую подписку, в которой необходимо восстановить пул SQL.

  8. Восстановите выделенный пул SQL в нужную точку восстановления с помощью командлета PowerShell Restore-AzSqlDatabase.

  9. Убедитесь, что восстановленный выделенный пул SQL (прежнее название — Хранилище данных SQL) находится в сети.

  10. Если нужное назначение является рабочей областью Synapse, раскомментируйте код для выполнения дополнительного шага восстановления.

    1. Создайте точку восстановления для только что созданного хранилища данных.

    2. Получите последнюю точку восстановления, созданную с помощью синтаксиса Select -Last 1.

    3. Выполните восстановление в нужную рабочую область Azure Synapse.

      $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
      
      

Устранение неполадок

Операция восстановления может привести к сбою развертывания и исключению RequestTimeout.

Screenshot from resource group deployments dialog of a timeout exception.

Этот таймаут можно проигнорировать. Просмотрите страницу выделенного пула SQL в портал Azure, и она может по-прежнему иметь состояние "Восстановление" и в конечном итоге перейдет в "Онлайн".

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