Сведения о резервном копировании SQL Server на виртуальных машинах Azure

Azure Backup — это специализированное решение на основе потоковой передачи данных для резервного копирования SQL Server, запущенного на виртуальных машинах Azure. Это решение соответствует преимуществам долгосрочного хранения, централизованного управления и резервного копирования без инфраструктуры, предоставляемым Azure Backup. Кроме того, оно предоставляет следующие преимущества специально для SQL Server:

  1. Резервные копии с учетом рабочей нагрузки, поддерживающие все типы резервного копирования — полное, разностное и резервное копирование журналов.
  2. 15-минутная целевая точка восстановления (RPO) с частым созданием резервных копий журналов.
  3. Восстановление до точки во времени с точностью до секунды.
  4. резервное копирование и восстановление на уровне отдельных баз данных.

Примечание

Резервное копирование на основе моментального снимка для баз данных SQL в виртуальной машине Azure теперь находится на этапе предварительной версии. В этом уникальном предложении сочетаются все преимущества моментальных снимков, что приводит к более эффективному и незначительному влиянию на сервер, а также предоставляет преимущества частого резервного копирования журналов для низкого RPO. При наличии вопросов или необходимости в доступе напишите нам по адресу AskAzureBackupTeam@microsoft.com.

Сценарии резервного копирования и восстановления, которые поддерживаются в настоящее время, приведены в таблице поддержки.

Процесс резервного копирования

Это решение использует собственные API-интерфейсы SQL для создания резервных копий баз данных SQL.

  • После того как вы укажете виртуальную машину SQL Server, которую нужно защитить, и выполните запрос баз данных на ней, служба Azure Backup установит на виртуальную машину расширение резервного копирования рабочих нагрузок с именем AzureBackupWindowsWorkload.

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

  • Чтобы иметь возможность обнаруживать базы данных на этой виртуальной машине, Azure Backup создает учетную запись NT SERVICE\AzureWLBackupPluginSvc. Эта учетная запись используется для резервного копирования и восстановления и требует разрешений системного администратора SQL. Учетная запись NT SERVICE\AzureWLBackupPluginSvc — это учетная запись виртуальной службы, поэтому для нее не требуется управление паролями. Azure Backup будет использовать учетную запись NT AUTHORITY\SYSTEM для обнаружения и запроса баз данных, поэтому эта учетная запись должна соответствовать общедоступному имени входа в SQL. Если вы не создавали виртуальную машину SQL Server из Azure Marketplace, может появиться ошибка UserErrorSQLNoSysadminMembership. В этом случае выполните эти инструкции.

  • Когда вы запустите настройку защиты для выбранных баз данных, служба резервного копирования установит координатор с расписаниями резервного копирования и другими сведениями о политике, которые расширение кэширует локально на виртуальной машине.

  • В назначенное время координатор связывается с подключаемым модулем и начинает потоковую передачу данных резервного копирования с сервера SQL с помощью VDI.

  • Подключаемый модуль отправляет данные непосредственно в хранилище Служб восстановления, что устраняет необходимость в промежуточном хранении. Данные зашифрованы и хранятся службой Azure Backup в учетных записях хранения.

  • Когда передача данных завершается, координатор подтверждает фиксацию с помощью службы резервного копирования.

    Архитектура службы резервного копирования SQL

Перед началом работы

Прежде чем начать:

  1. Убедитесь, что у вас есть экземпляр SQL Server, работающий в Azure. Вы можете быстро создать экземпляр SQL Server в marketplace.
  2. Просмотрите рекомендации о функциях и сведения о поддержке сценариев.
  3. Ознакомьтесь с часто задаваемыми вопросами об этом сценарии.

Настройка разрешений виртуальной машины

При запуске обнаружения в SQL Server Azure Backup выполнит следующие действия.

  • Добавляет расширение AzureBackupWindowsWorkload.
  • Чтобы обнаруживать базы данных на виртуальной машине, Azure Backup создает учетную запись NT SERVICE\AzureWLBackupPluginSvc. Эта учетная запись используется для резервного копирования и восстановления и требует разрешений системного администратора SQL.
  • Для предоставления баз данных, запущенных на виртуальной машине, Azure Backup использует учетную запись NT AUTHORITY\SYSTEM. Эта учетная запись должна быть общедоступной для входа в SQL.

Если вы не создавали виртуальную машину SQL Server в Azure Marketplace или если вы используете SQL 2008 или SQL 2008 R2, может появиться ошибка UserErrorSQLNoSysadminMembership.

Сведения о предоставлении разрешений для SQL 2008 и SQL 2008 R2, используемых в Windows 2008 R2, см. в этой статье.

Для всех остальных версий следует исправить разрешения с помощью следующих шагов.

  1. Войдите в SQL Server Management Studio (SSMS) с помощью учетной записи, имеющей разрешение sysadmin SQL Server. Если вам не требуются специальные разрешения, можно использовать проверку подлинности Windows.

  2. На сервере SQL Server последовательно откройте папки Security (Безопасность) и Logins (Имена входа).

    Открытие папки

  3. Щелкните правой кнопкой мыши папку Имена для входа и выберите Создать имя для входа. В меню Создание имени входа выберите Поиск.

    Выбор

  4. Учетная запись виртуальной службы Windows NT SERVICE\AzureWLBackupPluginSvc была создана во время регистрации виртуальной машины и обнаружения баз данных SQL. Введите имя учетной записи, как показано в поле Введите имя объекта. Выберите Проверить имена, чтобы разрешить имя. Щелкните ОК.

    Выбор

  5. Убедитесь, что в качестве роли сервера выбрана роль sysadmin. Щелкните ОК. Теперь должны существовать необходимые разрешения.

    Убедитесь, что для сервера выбрана роль sysadmin.

  6. Теперь свяжите базу данных с хранилищем Служб восстановления. В списке Защищенные серверы на портале Azure щелкните правой кнопкой мыши сервер, на котором произошла ошибка, и выберите >Повторно обнаружить базы данных.

    Проверка наличия у сервера соответствующих разрешений

  7. Проверьте ход выполнения в области Уведомления. Когда выбранные базы данных будут найдены, появится сообщение об успешном завершении.

    Сообщение об успешном развертывании

Примечание

Если в среде SQL Server установлено несколько экземпляров SQL Server, то необходимо добавить разрешение sysadmin для учетной записи NT Service\AzureWLBackupPluginSvc для всех этих экземпляров.

Присвоение разрешений администратора SQL в SQL 2008 и SQL 2008 R2

Добавьте в экземпляр SQL Server имена входа NT AUTHORITY\SYSTEM и NT Service\AzureWLBackupPluginSvc.

  1. Перейдите к экземпляру SQL Server в обозревателе объектов.

  2. Перейдите в раздел "Безопасность -> Имена входа"

  3. Щелкните правой кнопкой мыши на именах входа и выберите Создать имя входа...

    Создание имени входа с помощью SSMS

  4. Перейдите на вкладку "Общие" и в качестве имени входа введите NT AUTHORITY\SYSTEM.

    Имя для входа в SSMS

  5. Перейдите к Роли сервера и выберите такие роли, как общедоступная и администратор.

    Выбор ролей в SSMS

  6. Перейдите в раздел Состояние. Предоставить разрешение на подключение к ядру СУБД и вход как Включено.

    Предоставление разрешений в SSMS

  7. Нажмите кнопку "ОК".

  8. Чтобы добавить имя для входа NT Service\AzureWLBackupPluginSvc в экземпляр SQL Server, повторите ту же последовательность шагов (1 - 7 приведенных выше). Если имя для входа уже существует, убедитесь, что ему присвоена роль администратора сервера и в разделе состояния этому имени предоставлено разрешение на подключение к ядру СУБД и вход в качестве включено.

  9. После предоставления разрешений на портале следует повторно обнаружить базы данных: выберите "Хранилище" -> "Инфраструктура резервного копирования" -> имя рабочей нагрузки в виртуальной машине Azure.

    Повторное обнаружение баз данных на портале Azure

Кроме этого, можно автоматизировать раздачу разрешений путем выполнения следующих команд PowerShell в режиме администратора. По умолчанию в качестве имени экземпляра устанавливается значение MSSQLSERVER. При необходимости измените аргумент имени экземпляра в скрипте.

param(
    [Parameter(Mandatory=$false)]
    [string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
    $fullInstance = $env:COMPUTERNAME   # In case it is the default SQL Server Instance
}
else
{
    $fullInstance = $env:COMPUTERNAME + "\" + $InstanceName   # In case of named instance
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT Service\AzureWLBackupPluginSvc', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}

Настройка одновременного резервного копирования

Теперь вы можете настроить резервные копии для одновременного сохранения точек восстановления и журналов SQL Server в локальном хранилище и хранилище служб восстановления.

Чтобы настроить одновременное резервное копирование, выполните следующие действия.

  1. Перейдите в C:\Program Files\Azure Workload Backup\bin\plugins расположение и создайте файл PluginConfigSettings.json, если он отсутствует.

  2. Добавьте разделенные запятыми сущности значения ключа с ключами EnableLocalDiskBackupForBackupTypes и LocalDiskBackupFolderPath в JSON-файл.

    • В разделе EnableLocalDiskBackupForBackupTypesукажите типы резервных копий, которые требуется хранить локально.

      Например, если вы хотите сохранить полные резервные копии и резервные копии журналов, упоминание ["Full", "Log"]. Чтобы хранить только резервные копии журналов, упоминание ["Log"].

    • В LocalDiskBackupFolderPathупоминание путь к локальной папке. Убедитесь, что при указании пути в JSON-файле используется двойная косая черта .

      Например, если предпочтительный путь для локального резервного копирования — E:\LocalBackup, упоминание путь в JSON как E:\\LocalBackup.

      Окончательный код JSON должен выглядеть следующим образом:

      {
         "EnableLocalDiskBackupForBackupTypes": ["Log"],
         "LocalDiskBackupFolderPath": "E:\\LocalBackup",
      }
      

      Если в JSON-файле есть и другие предварительно заполненные записи, добавьте две указанные выше записи в конец JSON-файла непосредственно перед закрывающей фигурной скобкой.

  3. Чтобы изменения вступили в силу немедленно, а не через час, перейдите враздел СлужбыTaskManager>, щелкните правой кнопкой мыши AzureWLbackupPluginSvc и выберите Остановить.

    Внимание!

    Это действие отменит все текущие задания резервного копирования.

    Соглашение об именовании сохраненного файла резервной копии и структуры папок для него будет иметь значение {LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}.

    Например, если у вас есть база данных Contoso в экземпляре MSSQLSERVERSQL , файлы будут находиться в E:\LocalBackup\MSSQLSERVER\Contoso.

    Имя файла — VDI device set guid, который используется для операции резервного копирования.

  4. Убедитесь, что целевое расположение в разделе LocalDiskBackupFolderPath имеет разрешения на чтение и запись для NT Service\AzureWLBackupPluginSvc.

    Примечание

    Для папки на локальных дисках виртуальных машин щелкните правой кнопкой мыши папку и настройте необходимые разрешения для NT Service\AzureWLBackupPluginSvc на вкладке Безопасность .

    Если вы используете сетевую или общую папку SMB, настройте разрешения, выполнив приведенные ниже командлеты PowerShell из консоли пользователя, которая уже имеет разрешение на доступ к общей папке:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath <FileSharePath> -Credential $cred -LocalPath <LocalDrive>:  -FullAccess @("<Comma Separated list of accounts>") -Persistent $true
    

    Пример:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath \\i00601p1imsa01.file.core.windows.net\rsvshare -Credential $cred -LocalPath Y:  -FullAccess @("NT AUTHORITY\SYSTEM","NT Service\AzureWLBackupPluginSvc") -Persistent $true
    

Дальнейшие действия

  • Дополнительные сведения о резервном копировании баз данных SQL Server см. в этой статье.
  • Дополнительные сведения о восстановлении резервных копий баз данных SQL Server см. в этой статье.
  • Дополнительные сведения об управлении резервными копиями баз данных SQL Server см. в этой статье.