Sobre o Backup do SQL Server nas VMs do Azure

O Backup do Azure oferece uma solução especializada baseada em fluxo para fazer backup do SQL Server em execução em VMs do Azure. Essa solução se alinha com os benefícios do Backup do Azure de backup sem infraestrutura, retenção de longo prazo e gerenciamento central. Além disso, ela fornece as seguintes vantagens especificamente para o SQL Server:

  • Backups com reconhecimento de carga de trabalho que dão suporte a todos os tipos de backup: completo, diferencial e log
  • RPO (objetivo de ponto de recuperação) de 15 minutos com backups de log frequentes
  • Recuperação pontual de até um segundo
  • Backup e restauração no nível do banco de dados individual

Para ver os cenários de backup e restauração aos quais damos suporte hoje, confira a matriz de suporte.

Processo de backup

Essa solução aproveita as APIs nativas do SQL para fazer backups dos bancos de dados SQL.

  • Depois que você especificar a VM do SQL Server que você deseja proteger e na qual consultar os bancos de dados, o serviço de Backup do Azure instalará uma extensão de backup de carga de trabalho na VM pelo nome da extensão AzureBackupWindowsWorkload.

  • Essa extensão consiste em um coordenador e um plugin do SQL. Ao passo que o coordenador é responsável por disparar fluxos de trabalho para várias operações, como configurar o backup, backup e restauração, o plugin é responsável por fluxo de dados real.

  • Para poder descobrir bancos de dados nesta VM, o Backup do Azure cria a conta NT SERVICE\AzureWLBackupPluginSvc. Essa conta é usada para backup e restauração e exige permissões de sysadmin do SQL. A conta NT SERVICE\AzureWLBackupPluginSvc é uma conta de serviço virtual e, portanto, não exige nenhum gerenciamento de senha. O Backup do Azure usa a conta NT AUTHORITY\SYSTEM para descoberta/consulta de banco de dados. Portanto, essa conta precisa ser um logon público no SQL. Caso não tenha criado a VM do SQL Server no Azure Marketplace, você poderá receber o erro UserErrorSQLNoSysadminMembership. Se isso ocorrer, siga estas instruções.

  • Depois que o gatilho configurar a proteção nos bancos de dados selecionados, o serviço de backup configura o coordenador com as agendas de backup e outros detalhes da política, que aumenta os caches localmente na VM.

  • No horário agendado, o coordenador se comunica com o plugin e ele começa a transmissão dos dados de backup do SQL Server usando o VDI.

  • O plug-in envia os dados diretamente para o cofre dos Serviços de Recuperação, eliminando a necessidade de uma localização de preparo. Os dados são criptografados e armazenados pelo serviço de Backup do Microsoft Azure em contas de armazenamento.

  • Quando a transferência de dados for concluída, o coordenador confirma com o serviço de backup.

    Arquitetura de backup SQL

Antes de começar

Antes de começar, verifique os seguintes requisitos:

  1. Garanta que você tenha uma Instância do SQL Server em execução no Azure. Você pode criar uma Instância do SQL Server rapidamente no marketplace.
  2. Examine as considerações sobre recursos e o suporte de cenários.
  3. Examine as perguntas comuns sobre esse cenário.

Definir permissões da VM

Ao executar a descoberta em um SQL Server, o Backup do Azure faz o seguinte:

  • Adiciona a extensão AzureBackupWindowsWorkload.
  • Cria uma conta NT SERVICE\AzureWLBackupPluginSvc para descobrir bancos de dados na máquina virtual. Essa conta é usada para backup e restauração e exige permissões de sysadmin do SQL.
  • Descobre os bancos de dados que estão em execução em uma VM, o Backup do Azure usa a conta NT AUTHORITY\SYSTEM. Essa conta deve estar conectada publicamente no SQL.

Se você não criou a VM do SQL Server no Azure Marketplace ou se está usando o SQL 2008 ou 2008 R2, talvez receba o erro UserErrorSQLNoSysadminMembership.

Para conceder permissões no caso do SQL 2008 e do 2008 R2 em execução no Windows 2008 R2, acesse aqui.

Para todas as outras versões, corrija as permissões com as seguintes etapas:

  1. Use uma conta com permissões de sysadmin do SQL Server para entrar no SSMS (SQL Server Management Studio). A menos que você precise de permissões de acesso especiais, a autenticação do Windows deverá funcionar.

  2. No SQL Server, abra a pasta Segurança/Logons.

    Abra a pasta Segurança/Logons para ver as contas

  3. Clique com o botão direito do mouse na pasta Logons e selecione Novo Logon. Em Logon – Novo, selecione Pesquisar.

    Na caixa de diálogo Logon – Novo, selecione Pesquisar

  4. A conta de serviço virtual do Windows NT SERVICE\AzureWLBackupPluginSvc foi criada durante a fase de descoberta do SQL e do registro da máquina virtual. Insira o nome da conta, conforme mostrado em Inserir o nome do objeto a ser selecionado. Selecione Verificar Nomes para resolver o nome. Selecione OK.

    Selecione Verificar Nomes para resolver o nome de serviço desconhecido

  5. Em Funções de Servidor, verifique se a função sysadmin está selecionada. Selecione OK. As permissões necessárias agora devem existir.

    Verifique se a função de servidor sysadmin está selecionada

  6. Agora, associe o banco de dados ao cofre dos Serviços de Recuperação. No portal do Azure, na lista Servidores Protegidos, clique com o botão direito do mouse no servidor que está em um estado de erro >Redescobrir BDs.

    Verifique se o servidor tem as permissões apropriadas

  7. Verifique o progresso na área Notificações. Quando os bancos de dados selecionados são descobertos, é exibida uma mensagem de êxito.

    Mensagem de êxito na implantação

Observação

Se o SQL Server tiver várias instâncias do SQL Server instaladas, você precisará adicionar a permissão sysadmin para a conta NT Service\AzureWLBackupPluginSvc em todas as instâncias do SQL.

Conceder permissões de sysadmin do SQL para SQL 2008 e SQL 2008 R2

Adicione logins do NT AUTHORITY\SYSTEM e do NT Service\AzureWLBackupPluginSvc à instância do SQL Server:

  1. Vá até a instância do SQL Server no Pesquisador de Objetos.

  2. Navegue até Segurança -> Logons

  3. Clique com o botão direito do mouse nos logons e selecione Novo Logon…

    Novo logon usando o SSMS

  4. Vá até a guia Geral e insira NT AUTHORITY\SYSTEM como o nome de logon.

    Nome de logon para o SSMS

  5. Vá até Funções de Servidor e escolha as funções public e sysadmin.

    Como escolher funções no SSMS

  6. Vá até Status. Conceda a permissão para conectar ao mecanismo de banco de dados e faça logon como Habilitado.

    Conceder permissões no SSMS

  7. Selecione OK.

  8. Repita a mesma sequência de etapas (de 1 a 7 acima) para adicionar o logon de NT Service\AzureWLBackupPluginSvc à instância do SQL Server. Se o logon já existe, verifique se tem a função de servidor sysadmin e, em Status, se tem a permissão de concessão para se conectar ao mecanismo de banco de dados e faça logon como Habilitado.

  9. Após conceder permissão, Redescobrir DBs no portal: Cofre -> Gerenciar -> Infraestrutura de backup -> Carga de trabalho na VM do Azure:

    Redescobrir bancos de dados no portal do Azure

Como alternativa, é possível automatizar o fornecimento de permissões executando os seguintes comandos do PowerShell no modo de administrador. Por padrão, o nome da instância é definido como MSSQLSERVER. Se necessário, altere o argumento do nome da instância no script.

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
}

Configurar backups simultâneos

Agora você pode configurar backups para salvar os pontos de recuperação e os logs do SQL Server em um cofre dos Serviços de Recuperação e armazenamento local simultaneamente.

Para configurar backups simultâneos, siga essas etapas:

  1. Vá para o local C:\Program Files\Azure Workload Backup\bin\plugins e crie o arquivo PluginConfigSettings.json, se ele não estiver presente.

  2. Adicione as entidades de valor de chave separadas por vírgulas, com as chaves EnableLocalDiskBackupForBackupTypes e LocalDiskBackupFolderPath ao arquivo JSON.

    • Em EnableLocalDiskBackupForBackupTypes, liste os tipos de backup que você deseja armazenar localmente.

      Por exemplo, se você quiser armazenar os backups Completo e Log, mencione ["Full", "Log"]. Para armazenar apenas os backups de log, mencione ["Log"].

    • Em LocalDiskBackupFolderPath, mencione o caminho para a pasta local. Certifique-se de usar a barra comum dupla ao mencionar o caminho no arquivo JSON.

      Por exemplo, se o caminho preferido para o backup local for E:\LocalBackup, mencione o caminho em JSON como E:\\LocalBackup.

      O JSON final deve ser como:

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

      Se houver outras entradas pré-preenchidas no arquivo JSON, adicione as duas entradas acima na parte inferior do arquivo JSON antes do colchete de encerramento.

  3. Para que as alterações entrem em vigor imediatamente em vez de uma hora regular, acesse TaskManager>Serviços, clique com o botão direito do mouse em AzureWLbackupPluginSvc e selecione Interromper.

    Cuidado

    Essa ação cancelará todos os trabalhos de backup em andamento.

    A convenção de nomenclatura do arquivo de backup armazenado e a estrutura de pastas para ele será {LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}.

    Por exemplo, se você tiver um banco de dados Contoso na instância SQL MSSQLSERVER, os arquivos estarão localizados em E:\LocalBackup\MSSQLSERVER\Contoso.

    O nome do arquivo é VDI device set guid, que é usado para a operação de backup.

  4. Verifique se o local de destino em LocalDiskBackupFolderPath tem permissões de leitura e gravação para NT Service\AzureWLBackupPluginSvc.

    Observação

    Para obter uma pasta nos discos de VM local, clique com o botão direito do mouse na pasta e configure as permissões necessárias para NT Service\AzureWLBackupPluginSvc na guia Segurança.

    Se você estiver usando uma rede ou compartilhamento de SMB, configure as permissões executando os cmdlets do PowerShell abaixo de um console do usuário que já tem permissão para acessar o compartilhamento:

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

    Exemplo:

    $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
    

Próximas etapas