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

Tip

Microsoft Fabric Data Warehouse — это реляционное хранилище корпоративного масштаба на основе озера данных, с архитектурой, готовой к будущему, встроенной ИИ и новыми функциями. Если вы не знакомы с хранилищем данных, начните с Fabric Data Warehouse. Существующие рабочие нагрузки выделенного пула SQL могут обновляться до Fabric для доступа к новым возможностям в области науки о данных, аналитики в реальном времени и отчетности.

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

Примечание.

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

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

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

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

  3. В разделе Getting Started ->Open Synapse Studio выберите Open. Снимок экрана: Synapse Studio с полем Open Synapse Studio и ссылкой

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

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

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

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

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

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

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

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

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

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

    Примечание.

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

  9. Выберите Проверка и создание.

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

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

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

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

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

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

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

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

  5. Выберите Проверка и создание.

Восстановление существующего выделенного пула 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 DW). Если нужно восстановить выделенный пул 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. Prerequisite 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 во время восстановления

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

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

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

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

Ошибка: "ValidationFailed: указанный идентификатор ресурса недопустим для этой операции. Используйте ресурс пула SQL"

Если вы получили эту ошибку, убедитесь, что sourceDatabaseId использует поддерживаемый формат идентификатора ресурса и указывает на нужный исходный выделенный пул SQL.

Поддерживаемые форматы

Идентификатор ресурса пула SQL Synapse /subscriptions/{subscriptionId}/resourceGroups/{workspaceResourceGroup}/providers/Microsoft.Synapse/workspaces/{workspaceName}/sqlPools/{sqlPoolName}

Идентификатор ресурса управляемой базы данных SQL /subscriptions/{subscriptionId}/resourceGroups/{managedResourceGroup}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}