Compartir vía


Acerca de la copia de seguridad de SQL Server en máquinas virtuales de Azure

Azure Backup ofrece una solución especializada basada en secuencias para realizar copias de seguridad de SQL Server que se ejecutan en máquinas virtuales de Azure. Esta solución se ajusta a los beneficios de copia de seguridad sin necesidad de infraestructura, retención a largo plazo y administración central que ofrece Azure Backup. Además, proporciona las siguientes ventajas específicamente para SQL Server:

  • Copias de seguridad con reconocimiento de la carga de trabajo que admiten todos los tipos de copia de seguridad: completa, diferencial y de registros
  • Objetivo de punto de recuperación (RPO) de 15 minutos con copias de seguridad frecuentes de registros
  • Recuperación a un momento dado en un segundo preciso
  • Copia de seguridad y restauración de bases de datos individuales

Para ver los escenarios de copia de seguridad y restauración que se admiten en la actualidad, consulte la matriz de compatibilidad.

Proceso de copia de seguridad

Esta solución aprovecha las API nativas de SQL para realizar copias de seguridad de las bases de datos SQL.

  • Una vez que especifique la máquina virtual con SQL Server que desea proteger y que consulte las bases de datos que hay en ella, el servicio Azure Backup instalará una extensión de copia de seguridad de cargas de trabajo en la máquina virtual con la extensión AzureBackupWindowsWorkload del nombre.

  • Esta extensión consta de un coordinador y un complemento SQL. Mientras que el coordinador es el responsable de desencadenar los flujos de trabajo de varias operaciones como la configuración de las copias de seguridad o la copia de seguridad y restauración, el complemento es responsable de flujo de datos real.

  • Para poder detectar bases de datos en esta máquina virtual, Azure Backup crea la cuenta NT SERVICE\AzureWLBackupPluginSvc. Dicha cuenta se usa para realizar operaciones de copia de seguridad y restauración, y requiere permisos de administrador del sistema de SQL. La cuenta NT SERVICE\AzureWLBackupPluginSvc es una cuenta de servicio virtual y, por lo tanto, no requiere administración de contraseñas. Azure Backup utiliza la cuenta NT AUTHORITY\SYSTEM para la detección y la consulta de bases de datos, por lo que debe tener un inicio de sesión público en SQL. Si no se creó la máquina virtual con SQL Server en Azure Marketplace, podría recibir el error UserErrorSQLNoSysadminMembership. Si esto sucede, siga estas instrucciones.

  • Una vez que desencadene la protección de la configuración en las bases de datos seleccionadas, el servicio de copia de seguridad configura el coordinador con las programaciones de las copias de seguridad y otros detalles de la directiva, que la extensión almacena en caché localmente en la máquina virtual.

  • A la hora programada, el coordinador se comunica con el complemento y empieza a transmitir los datos de la copia de seguridad en secuencias desde el servidor con SQL Server mediante VDI.

  • El complemento envía los datos directamente al almacén de Recovery Services, por lo que se elimina la necesidad de una ubicación de almacenamiento provisional. El servicio Azure Backup cifra los datos y los almacena en cuentas de almacenamiento.

  • Cuando se completa la transferencia de datos, el coordinador realiza la confirmación con el servicio de copia de seguridad.

    Arquitectura de copia de seguridad de SQL

Antes de comenzar

Antes de empezar, haga las siguientes comprobaciones:

  1. Asegúrese de tener una instancia de SQL Server que se ejecuta en Azure. Puede crear rápidamente una instancia de SQL Server en Marketplace.
  2. Revise los apartados en que se realizan consideraciones acerca de las características y se indica la compatibilidad con los escenarios.
  3. Revise las preguntas más frecuentes sobre este escenario.

Establecer permisos de máquina virtual

Al ejecutar la detección en un servidor SQL Server, Azure Backup hace lo siguiente:

  • Agrega la extensión AzureBackupWindowsWorkload.
  • Crea una cuenta NT SERVICE\AzureWLBackupPluginSvc para detectar las bases de datos en la máquina virtual. Dicha cuenta se usa para realizar una operación de copia de seguridad y restauración, y requiere permisos de administrador del sistema de SQL.
  • Detecta las bases de datos que se ejecutan en una CM, Azure Backup usa la cuenta NT AUTHORITY\SYSTEM. Esta cuenta ofrecer inicio de sesión público en SQL.

Si no creó la máquina virtual con SQL Server en Azure Marketplace o si usa SQL 2008 o 2008 R2, es posible que reciba un error UserErrorSQLNoSysadminMembership.

Para conceder permisos en el caso de que SQL 2008 y 2008 R2 se ejecuten en Windows 2008 R2, consulte aquí.

Para las demás versiones, realice los pasos siguientes para corregir los permisos:

  1. Use una cuenta con permisos sysadmin de SQL Server para iniciar sesión en SQL Server Management Studio (SSMS). A menos que necesite permisos especiales, debería funcionar la autenticación de Windows.

  2. En el servidor SQL Server, abra la carpeta Seguridad/Inicios de sesión.

    Abrir carpeta Security/Logins para ver las cuentas

  3. Haga clic con el botón derecho en la carpeta Logins y seleccione Nuevo inicio de sesión. En Inicio de sesión: Nuevo, seleccione Buscar.

    En el cuadro de diálogo Inicio de sesión - Nuevo, seleccionar Buscar

  4. La cuenta de servicio virtual de Windows NT SERVICE\AzureWLBackupPluginSvc se creó durante las fases de registro de la máquina virtual y de detección de SQL. Escriba el nombre de la cuenta como se muestra en Escriba el nombre del objeto que desea seleccionar. Seleccione Comprobar nombres para resolver el nombre. Seleccione Aceptar.

    Seleccionar Comprobar nombres para resolver el nombre de servicio desconocido

  5. En Roles de servidor, asegúrese de que está seleccionado el rol sysadmin. Seleccione Aceptar. Ahora deben existir los permisos necesarios.

    Asegúrese de que el rol del servidor administrador del sistema está seleccionado

  6. Ahora, asocie la base de datos con el almacén de Recovery Services. En Azure Portal, en la lista Servidores protegidos, haga clic con el botón derecho en el servidor que tiene un estado de error >Rediscover DBs (Volver a detectar bases de datos).

    Comprobar que el servidor tiene los permisos adecuados

  7. Compruebe el progreso en el área Notificaciones. Cuando se detectan las bases de datos seleccionadas, aparece un mensaje de operación correcta.

    Mensaje de implementación correcta

Nota:

Si su servidor SQL Server tiene varias instancias de SQL Server instaladas, debe agregar permisos de administrador del sistema a la cuenta NT Service\AzureWLBackupPluginSvc en todas las instancias de SQL.

Conceder permisos de administrador del sistema para SQL 2008 y SQL 2008 R2

Agregue los inicios de sesión NT AUTHORITY\SYSTEM y Service\AzureWLBackupPluginSvc NT en la instancia de SQL Server:

  1. Vaya a la instancia de SQL Server en el Explorador de objetos.

  2. Vaya a Seguridad -> Inicios de sesión.

  3. Haga clic con el botón derecho en "Inicios de sesión" y seleccione Nuevo inicio de sesión… .

    Nuevo inicio de sesión mediante SSMS

  4. Vaya a la pestaña General y escriba NT AUTHORITY\SYSTEM como nombre de inicio de sesión.

    Nombre de inicio de sesión para SSMS

  5. Vaya a Roles del servidor y elija los roles public y sysadmin.

    Elegir de roles en SSMS

  6. Vaya a Estado. En Permiso de conexión al motor de base de datos, seleccione Conceder y en Inicio de sesión, seleccione Habilitado.

    Conceder permisos en SSMS

  7. Seleccione Aceptar.

  8. Repita la misma secuencia de pasos (de 1 a 7 arriba) para agregar el inicio de sesión NT Service\AzureWLBackupPluginSvc a la instancia de SQL Server. Si el inicio de sesión ya existe, asegúrese de que tenga el rol de servidor sysadmin y, en Estado, en Permiso de conexión al motor de base de dato, se haya seleccionado Conceder y, en Inicio de sesión, se haya seleccionado Habilitado.

  9. Tras conceder el permiso, redescubra las bases de datos en el portal: Almacén -> Administrar -> Infraestructura de copia de seguridad -> Carga de trabajo en la VM de Azure:

    Volver a detectar bases de datos en Azure Portal

Como alternativa, puede automatizar la concesión de los permisos al ejecutar los siguientes comandos de PowerShell en modo de administrador. El nombre de instancia se establece en MSSQLSERVER de manera predeterminada. Si fuera necesario, cambie el argumento de nombre de instancia en el 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
}

Configuración de copias de seguridad simultáneas

Ahora es posible configurar copias de seguridad para guardar los puntos de recuperación y los registros de SQL Server en un almacén de Recovery Services y en almacenamiento local simultáneamente.

Para configurar copias de seguridad simultáneas, siga estos pasos:

  1. Vaya a la ubicación C:\Program Files\Azure Workload Backup\bin\plugins y, a continuación, cree el archivo PluginConfigSettings.json, si no estuviera presente.

  2. Agregue las entidades de valor de clave separadas por comas que tienen las claves EnableLocalDiskBackupForBackupTypes y LocalDiskBackupFolderPath al archivo JSON.

    • En EnableLocalDiskBackupForBackupTypes, enumere los tipos de copia de seguridad que desee almacenar localmente.

      Por ejemplo, si desea almacenar las copias de seguridad Completa y Registro, mencione ["Full", "Log"]. Para almacenar solo las copias de seguridad de registros, mencione ["Log"].

    • En LocalDiskBackupFolderPath, mencione la ruta de acceso a la carpeta local. Asegúrese de usar la barra diagonal doble mientras menciona la ruta de acceso en el archivo JSON.

      Por ejemplo, si la ruta de acceso preferida para la copia de seguridad local fuera E:\LocalBackup, mencione la ruta de acceso en JSON como E:\\LocalBackup.

      El archivo JSON final debería aparecer como:

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

      Si hubiera otras entradas rellenadas previamente en el archivo JSON, agregue las dos entradas anteriores en la parte inferior del archivo JSON justo antes de la llave de cierre.

  3. Para que los cambios surtan efecto inmediatamente en lugar de en la hora habitual, vaya a TaskManager>Servicios, haga clic con el botón derecho en AzureWLbackupPluginSvc y seleccione Detener.

    Precaución

    Esta acción cancelará todos los trabajos de copia de seguridad en curso.

    La convención de nomenclatura del archivo de copia de seguridad almacenado y su estructura de carpetas será {LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}.

    Por ejemplo, si tiene una base de datos Contoso en la instancia de SQL MSSQLSERVER, los archivos se ubicarán en E:\LocalBackup\MSSQLSERVER\Contoso.

    El nombre del archivo es VDI device set guid, el cual se usa para la operación de copia de seguridad.

  4. Compruebe si la ubicación de destino en LocalDiskBackupFolderPath tiene permisos de lectura y escritura para NT Service\AzureWLBackupPluginSvc.

    Nota:

    Para carpetas en los discos de máquina virtual local, haga clic con el botón derecho en la carpeta y configure los permisos necesarios para NT Service\AzureWLBackupPluginSvc en la pestaña Seguridad.

    Si usa un recurso compartido de SMB o de red, configure los permisos ejecutando los siguientes cmdlets de PowerShell desde una consola de usuario que ya tenga el permiso para acceder al recurso compartido:

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

    Ejemplo:

    $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
    

Pasos siguientes

  • Más información acerca de la copia de seguridad de bases de datos de SQL Server.
  • Más información sobre la restauración de copias de seguridad de bases de datos de SQL Server.
  • Más información sobre la administración de copias de seguridad de bases de datos de SQL Server.