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

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

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

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

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

Это решение использует собственные 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. Нажмите ОК. Теперь должны существовать необходимые разрешения.

    Окно

  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. После предоставления разрешения повторное обнаружение DOB-объектов на портале: Vault > управление> инфраструктурой резервного копирования —> рабочая нагрузка на виртуальной машине 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 см. в этой статье.