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


Восстановление существующего выделенного пула 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 и щелкните Открыть. Снимок экрана: Synapse Studio с полем Open Synapse Studio и ссылкой

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

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

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

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

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

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

    Снимок экрана: страница портал Azure, страница

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

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

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

    Примечание.

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

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

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

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

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

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

    Снимок экрана с портал Azure, на котором показана страница обзора пула SQL. Выделена кнопка

  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.

Снимок экрана: диалоговое окно исключения из-за истечения времени ожидания при развертываниях групп ресурсов.

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

Снимок экрана: диалоговое окно для пула SQL, где отображается состояние восстановления.