Partilhar via


Sobre a Cópia de Segurança do SQL Server em VMs do Azure

Azure Backup oferece uma solução especializada e baseada em fluxo para criar cópias de segurança SQL Server em execução em VMs do Azure. Esta solução está alinhada com os benefícios do Azure Backup de cópias de segurança de infraestrutura zero, retenção de longo prazo e gestão central. Além disso, fornece as seguintes vantagens especificamente para SQL Server:

  1. Cópias de segurança com suporte para cargas de trabalho que suportam todos os tipos de cópia de segurança – completo, diferencial e registo
  2. RPO de 15 minutos (objetivo do ponto de recuperação) com cópias de segurança de registo frequentes
  3. Recuperação para um ponto anterior no tempo até um segundo
  4. Cópia de segurança e restauro ao nível da base de dados individual

Nota

A cópia de segurança baseada em instantâneos para bases de dados SQL na VM do Azure está agora em pré-visualização. Esta oferta exclusiva combina a bondade dos instantâneos, o que leva a um rtO melhor e um baixo impacto no servidor, juntamente com os benefícios das cópias de segurança de registo frequentes para um RPO baixo. Para quaisquer consultas/acesso, escreva-nos em AskAzureBackupTeam@microsoft.com.

Para ver os cenários de cópia de segurança e restauro que suportamos atualmente, veja a matriz de suporte.

Processo de cópia de segurança

Esta solução tira partido das APIs nativas do SQL para fazer cópias de segurança das bases de dados SQL.

  • Depois de especificar o SQL Server VM que pretende proteger e consultar para as bases de dados na mesma, Azure Backup serviço irá instalar uma extensão de cópia de segurança de carga de trabalho na VM através da extensão de nomeAzureBackupWindowsWorkload.

  • Esta extensão consiste num coordenador e num plug-in SQL. Embora o coordenador seja responsável por acionar fluxos de trabalho para várias operações, como configurar a cópia de segurança, a cópia de segurança e o restauro, o plug-in é responsável pelo fluxo de dados real.

  • Para poder detetar bases de dados nesta VM, Azure Backup cria a conta NT SERVICE\AzureWLBackupPluginSvc. Esta conta é utilizada para cópia de segurança e restauro e requer permissões de sysadmin do SQL. A NT SERVICE\AzureWLBackupPluginSvc conta é uma Conta de Serviço Virtual, pelo que não requer qualquer gestão de palavras-passe. Azure Backup utiliza a NT AUTHORITY\SYSTEM conta para deteção/investigação de bases de dados, pelo que esta conta tem de ser um início de sessão público no SQL. Se não criou a VM do SQL Server a partir do Azure Marketplace, pode receber um erro UserErrorSQLNoSysadminMembership. Se ocorrer essa situação, siga estas instruções.

  • Depois de acionar a configuração da proteção nas bases de dados selecionadas, o serviço de cópia de segurança configura o coordenador com os agendamentos de cópias de segurança e outros detalhes da política, que a extensão coloca em cache localmente na VM.

  • Na hora agendada, o coordenador comunica com o plug-in e começa a transmitir os dados de cópia de segurança do SQL Server com a VDI.

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

  • Quando a transferência de dados estiver concluída, o coordenador confirma a consolidação com o serviço de cópia de segurança.

    Arquitetura da Cópia de Segurança do SQL

Antes de começar

Antes de começar, verifique os seguintes requisitos:

  1. Certifique-se de que tem uma instância SQL Server em execução no Azure. Pode criar rapidamente uma instância SQL Server no marketplace.
  2. Reveja as considerações de funcionalidades e o suporte de cenários.
  3. Veja as perguntas comuns sobre este cenário.

Definir permissões da VM

Quando executa a deteção numa SQL Server, Azure Backup faz o seguinte:

  • Adiciona a extensão AzureBackupWindowsWorkload.
  • Cria uma conta NT SERVICE\AzureWLBackupPluginSvc para detetar bases de dados na máquina virtual. Esta conta é utilizada para uma cópia de segurança e restauro e requer permissões de sysadmin do SQL.
  • Detetar bases de dados em execução numa VM, Azure Backup utiliza a conta NT AUTHORITY\SYSTEM. Esta conta tem de ser um início de sessão público no SQL.

Se não tiver criado a VM SQL Server no Azure Marketplace ou se estiver no SQL 2008 ou 2008 R2, poderá receber um erro UserErrorSQLNoSysadminMembership.

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

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

  1. Utilize uma conta com permissões de SQL Server sysadmin para iniciar sessão no SQL Server Management Studio (SSMS). A menos que precise de permissões especiais, a autenticação do Windows deve funcionar.

  2. No SQL Server, abra a pasta Segurança/Inícios de Sessão.

    Abra a pasta Segurança/Inícios de Sessão para ver contas

  3. Clique com o botão direito do rato na pasta Inícios de Sessão e selecione Novo Início de Sessão. Em Início de Sessão - Novo, selecione Procurar.

    Na caixa de diálogo Iniciar sessão - Novo, selecione Procurar

  4. A conta de serviço virtual do Windows NT SERVICE\AzureWLBackupPluginSvc foi criada durante a fase de registo da máquina virtual e deteção de SQL. Introduza o nome da conta conforme mostrado em Introduzir o nome do objeto a selecionar. 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, certifique-se de que a função sysadmin está selecionada. Selecione OK. As permissões necessárias devem existir agora.

    Certifique-se de que a função de servidor sysadmin está selecionada

  6. Agora, associe a base 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 rato no servidor que está no estado > de erro Redescobrir DBs.

    Verifique se o servidor tem as permissões adequadas

  7. Verifique o progresso na área Notificações . Quando as bases de dados selecionadas são encontradas, é apresentada uma mensagem de êxito.

    Mensagem de implementação com êxito

Nota

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

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

Adicione inícios de sessão NT AUTHORITY\SYSTEM e NT Service\AzureWLBackupPluginSvc à Instância do SQL Server:

  1. Aceda à Instância do SQL Server no Explorador de objetos.

  2. Navegar para Segurança -> Inícios de sessão

  3. Clique com o botão direito do rato nos inícios de sessão e selecione Novo Início de Sessão...

    Novo Início de Sessão com o SSMS

  4. Aceda ao separador Geral e introduza NT AUTHORITY\SYSTEM como o Nome de Início de Sessão.

    Nome de início de sessão do SSMS

  5. Aceda a Funções de Servidor e escolha funções públicas e sysadmin .

    Escolher funções no SSMS

  6. Aceda a Estado. Conceda a Permissão para ligar ao motor de base de dados e Iniciar sessão como Ativado.

    Conceder permissões no SSMS

  7. Selecione OK.

  8. Repita a mesma sequência de passos (1-7 acima) para adicionar o início de sessão NT Service\AzureWLBackupPluginSvc à instância do SQL Server. Se o início de sessão já existir, certifique-se de que tem a função de servidor sysadmin e, em Estado, tem a opção Conceder permissão para ligar ao motor de base de dados e Iniciar sessão como Ativado.

  9. Depois de conceder permissão, redescobrir DBs no portal: Cofre –> Infraestrutura de Cópia de Segurança –> Carga de trabalho na VM do Azure:

    Redescobrir BDs no portal do Azure

Em alternativa, pode automatizar a atribuição das permissões ao executar os seguintes comandos do PowerShell no modo de administração. O nome da instância está definido como MSSQLSERVER por predefinição. Altere o argumento nome da instância no script, se necessário.

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 cópias de segurança simultâneas

Agora, pode configurar cópias de segurança para guardar os pontos de recuperação e os registos do SQL Server num cofre dos Serviços de Recuperação e armazenamento local em simultâneo.

Para configurar cópias de segurança simultâneas, siga estes passos:

  1. Aceda à C:\Program Files\Azure Workload Backup\bin\plugins localização e, em seguida, crie o ficheiro PluginConfigSettings.json, se não estiver presente.

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

    • Em EnableLocalDiskBackupForBackupTypes, liste os tipos de cópia de segurança que pretende armazenar localmente.

      Por exemplo, se quiser armazenar as cópias de segurança Completas e de Registo , mencione ["Full", "Log"]. Para armazenar apenas as cópias de segurança de registo, mencione ["Log"].

    • Em LocalDiskBackupFolderPath, mencione o caminho para a pasta local. Certifique-se de que utiliza a barra dupla para a frente ao mencionar o caminho no ficheiro JSON.

      Por exemplo, se o caminho preferencial para a cópia de segurança local for E:\LocalBackup, mencione o caminho em JSON como E:\\LocalBackup.

      O JSON final deve aparecer como:

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

      Se existirem outras entradas pré-preenchidas no ficheiro JSON, adicione as duas entradas acima na parte inferior do ficheiro JSON imediatamente antes do parêntese curvo de fecho.

  3. Para que as alterações entrem em vigor imediatamente em vez de uma hora normal, aceda a Serviços TaskManager>, clique com o botão direito do rato em AzureWLbackupPluginSvc e selecione Parar.

    Atenção

    Esta ação cancelará todas as tarefas de cópia de segurança em curso.

    A convenção de nomenclatura do ficheiro de cópia de segurança armazenado e da estrutura de pastas do mesmo será {LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}.

    Por exemplo, se tiver uma base de dados Contoso na instância MSSQLSERVERdo SQL, os ficheiros estarão localizados em E:\LocalBackup\MSSQLSERVER\Contoso.

    O nome do ficheiro é , VDI device set guidque é utilizado para a operação de cópia de segurança.

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

    Nota

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

    Se estiver a utilizar uma partilha de rede ou SMB, configure as permissões ao executar os cmdlets do PowerShell abaixo a partir de uma consola de utilizador que já tenha permissão para aceder à partilha:

    $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
    

Passos seguintes