Preparación de una base de datos secundaria para un grupo de disponibilidad Always On

Se aplica a:SQL Server

En este tema se describe cómo preparar una base de datos de un grupo de disponibilidad AlwaysOn en SQL Server usando SQL Server Management Studio, Transact-SQL o PowerShell. Para preparar una base de datos hay que realizar dos pasos:

  1. Restaurar una copia de seguridad reciente de la base de datos principal y las copias de seguridad de registros posteriores en cada instancia de servidor que hospeda la réplica secundaria, mediante RESTORE WITH NORECOVERY
  2. Combinar la base de datos restaurada con el grupo de disponibilidad

Sugerencia

Si tiene una configuración de trasvase de registros, es posible que pueda convertir la base de datos principal de trasvase de registros junto con una o varias de sus bases de datos secundarias en una réplica principal del grupo de disponibilidad y en una o varias réplicas secundarias. Para obtener más información, consulte Requisitos previos para migrar de Log Shipping a grupos de disponibilidad Always On (SQL Server).

Requisitos previos y restricciones

  • Asegúrese de que el sistema en donde piensa colocar la base de datos posee una unidad de disco con espacio suficiente para las bases de datos secundarias.

  • La base de datos secundaria debe tener el mismo nombre que la base de datos principal.

  • Use RESTORE WITH NORECOVERY para cada operación de restauración.

  • Si la base de datos secundaria debe residir en una ruta de acceso de archivo diferente (incluida la letra de unidad) de la de la base de datos principal, el comando de restauración debe utilizar la opción WITH MOVE para cada uno de los archivos de base de datos para especificarlos a la ruta de acceso de la base de datos secundaria.

  • Si restaura la base de datos grupo de archivos por grupo de archivos, asegúrese de restaurar la base de datos completa.

  • Después de restaurar la base de datos, debe restaurar (WITH NORECOVERY) cada copia de seguridad del registro creada desde la última copia de seguridad de datos restaurada.

Recomendaciones

  • En las instancias independientes de SQL Server, se recomienda que, si es posible, la ruta de acceso del archivo (incluida la letra de la unidad) de una base de datos secundaria determinada sea idéntica a la de la base de datos principal correspondiente. Esto se debe a que si se mueven los archivos de base de datos al crear una base de datos secundaria, una operación posterior de agregar archivo podría producir un error en la base de datos secundaria y hacer que esta se suspenda.

  • Antes de preparar las bases de datos secundarias, se recomienda encarecidamente suspender las copias de seguridad del registro programadas en las bases de datos del grupo de disponibilidad hasta que la inicialización de las réplicas secundarias se haya completado.

Seguridad

Cuando se realiza una copia de seguridad de una base de datos, la propiedad de base de datos TRUSTWORTHY se establece en OFF. Por lo tanto, TRUSTWORTHY está siempre en OFF en una base de datos que se acaba de restaurar.

Permisos

BACKUP DATABASE y BACKUP de forma predeterminada, los permisos LOG se conceden a los miembros del rol fijo de servidor sysadmin y de los roles fijos de base de datos db_owner y db_backupoperator. Para obtener más información, vea BACKUP (Transact-SQL).

Cuando la base de datos que se restaura no existe en la instancia del servidor, la RESTORE instrucción requiere CREATE DATABASE permisos. Para obtener más información, vea RESTORE (Transact-SQL).

Uso de SQL Server Management Studio

Nota:

Si las rutas de acceso de los archivos de copia de seguridad y restauración son idénticas entre la instancia del servidor que hospeda la réplica principal y cada instancia que hospeda la réplica secundaria, debe poder crear bases de datos de réplica secundaria con el Asistente para nuevo grupo de disponibilidad, el Asistente para agregar una réplica al grupo de disponibilidad o el Asistente para agregar una base de datos al grupo de disponibilidad.

Para preparar una base de datos secundaria

  1. A menos que ya tenga una copia de seguridad reciente de la base de datos principal, cree una nueva copia de seguridad de base de datos completa o diferencial. Como práctica recomendada, coloque esta copia de seguridad y las copias de seguridad del registro subsiguientes en el recurso compartido de red recomendado.

  2. Cree al menos una nueva copia de seguridad del registro de la base de datos principal.

Nota:

Puede que no sea necesaria una copia de seguridad del registro de transacciones si no se ha realizado previamente una copia de seguridad del registro de transacciones en la base de datos de la réplica principal. Microsoft recomienda hacer una copia de seguridad del registro de transacciones cada vez que una base de datos se combine con el grupo de disponibilidad.

  1. En la instancia del servidor que hospeda la réplica secundaria, restaure la copia de seguridad completa de la base de datos principal (y opcionalmente una copia de seguridad diferencial) seguida de las copias de seguridad del registro subsiguientes.

    En la RESTOREDATABASE página Opciones , seleccione Dejar la base de datos no operativa y no revertir las transacciones no confirmadas. Se pueden restaurar registros de transacciones adicionales. (RESTORE WITH NORECOVERY).

    Si las rutas de acceso de archivos de la base de datos principal y la base de datos secundaria difieren, por ejemplo, si la base de datos principal se encuentra en la unidad "F:" pero la instancia de servidor que hospeda la réplica secundaria no tiene unidad "F:", incluya la opción MOVE en la cláusula WITH.

  2. Para completar la configuración de la base de datos secundaria, debe unirla al grupo de disponibilidad. Para obtener más información, vea Combinar una base de datos secundaria con un grupo de disponibilidad (SQL Server).

Nota:

Para obtener información sobre cómo realizar estas operaciones de copia de seguridad y restauración, vea Tareas de copia de seguridad y restauración relacionadas, más adelante en esta sección.

Tareas de copia de seguridad y restauración relacionadas

Para crear una copia de seguridad de la base de datos

Para crear una copia de seguridad del registro

Para restaurar copias de seguridad

Uso de Transact-SQL

Para preparar una base de datos secundaria

Nota:

Para obtener un ejemplo de este procedimiento, vea Ejemplo (Transact-SQL), anteriormente en este tema.

  1. A menos que tenga una copia de seguridad completa reciente de la base de datos principal, conéctese a la instancia del servidor que hospeda la réplica principal y cree una copia de seguridad completa de la base de datos. Como práctica recomendada, coloque esta copia de seguridad y las copias de seguridad del registro subsiguientes en el recurso compartido de red recomendado.

  2. En la instancia del servidor que hospeda la réplica secundaria, restaure la copia de seguridad completa de la base de datos principal (y opcionalmente una copia de seguridad diferencial) seguida de todas las copias de seguridad del registro subsiguientes. Use WITH NORECOVERY en cada operación de restauración.

    Si las rutas de acceso de archivos de la base de datos principal y la base de datos secundaria difieren, por ejemplo, si la base de datos principal se encuentra en la unidad "F:" pero la instancia de servidor que hospeda la réplica secundaria no tiene unidad "F:", incluya la opción MOVE en la cláusula WITH.

  3. Si se han realizado copias de seguridad de registros en la base de datos principal desde la copia de seguridad de registros necesaria, también debe copiarlas en la instancia del servidor que hospeda la réplica secundaria y aplicar cada una de esas copias de seguridad de registro a la base de datos secundaria, empezando por la primera y siempre usando RESTORE WITH NORECOVERY.

    Nota:

    Ni existiría una copia de seguridad del registro si la base de datos principal se ha creado recientemente y no se ha hecho todavía ninguna copia de seguridad del registro, o si el modelo de recuperación ha cambiado recientemente de SIMPLE a FULL.

  4. Para completar la configuración de la base de datos secundaria, debe unirla al grupo de disponibilidad. Para obtener más información, vea Combinar una base de datos secundaria con un grupo de disponibilidad (SQL Server).

Nota:

Para obtener información sobre cómo realizar estas operaciones de copia de seguridad y restauración, vea Tareas de copia de seguridad y restauración relacionadas, más adelante en este tema.

Ejemplo de Transact-SQL

En el siguiente ejemplo se prepara una base de datos secundaria. En este ejemplo se utiliza la base de datos de ejemplo AdventureWorks2025 , que usa de forma predeterminada un modelo de recuperación simple.

  1. Para utilizar la base de datos AdventureWorks2025 , modifíquela para que utilice el modelo de recuperación completa:

    USE master;  
    GO  
    ALTER DATABASE MyDB1   
    SET RECOVERY FULL;  
    GO  
    
  2. Después de modificar el modelo de recuperación de la base de datos de SIMPLE a FULL, cree una copia de seguridad completa, que puede usarse para crear la base de datos secundaria. Dado que se acaba de cambiar el modelo de recuperación, se especifica la opción WITH FORMAT para crear un nuevo conjunto de soportes. Esto es útil para separar las copias de seguridad con el modelo de recuperación completa a partir de cualquier copia de seguridad anterior realizada con el modelo de recuperación simple. Para este ejemplo, el archivo de copia de seguridad (C:\AdventureWorks2025.bak) se crea en la misma unidad que la base de datos.

    Nota:

    Para una base de datos de producción, siempre se debe realizar la copia de seguridad en un dispositivo independiente.

    En la instancia del servidor que hospeda la réplica principal (INSTANCE01), cree una copia de seguridad completa de la base de datos principal del modo siguiente:

    BACKUP DATABASE MyDB1   
        TO DISK = 'C:\MyDB1.bak'   
        WITH FORMAT  
    GO  
    
  3. Copie la copia de seguridad completa en la instancia del servidor que hospeda la réplica secundaria.

  4. Restaure la copia de seguridad completa, mediante RESTORE WITH NORECOVERY, en la instancia del servidor que hospeda la réplica secundaria. El comando de restauración depende de si las rutas de acceso de las bases de datos principal y secundaria son idénticas.

    • Si las rutas de acceso son idénticas:

      En el equipo que hospeda la réplica secundaria, restaure la copia de seguridad completa del siguiente modo:

      RESTORE DATABASE MyDB1   
          FROM DISK = 'C:\MyDB1.bak'   
          WITH NORECOVERY  
      GO  
      
    • Si las rutas de acceso son distintas:

      Si la ruta de acceso de la base de datos secundaria difiere de la de la base de datos principal (por ejemplo, si las letras de unidad son distintas), la creación de la base de datos secundaria requiere que la operación de restauración incluya una cláusula MOVE.

      Importante

      Si los nombres de las rutas de acceso de las bases de datos principal y secundaria son distintos, no se puede agregar ningún archivo. Esto es debido a que al recibir el registro para la operación de agregar un archivo, la instancia del servidor de la réplica secundaria intenta colocar el nuevo archivo en la misma ruta de acceso utilizada por la base de datos principal.

      Por ejemplo, el siguiente comando restaura una copia de seguridad de una base de datos principal que reside en el directorio de datos de la instancia predeterminada de SQL Server, C:\Archivos de programa\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA. La operación de restauración de base de datos debe mover la base de datos al directorio de datos de una instancia remota de SQL Server denominada (AlwaysOn1), que hospeda la réplica secundaria en otro nodo de clúster. Allí, los archivos de registro y datos se restauran en el directorio C:\Archivos de programa\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA . La operación de restauración utiliza WITH NORECOVERY para dejar la base de datos secundaria en estado de restauración.

      RESTORE DATABASE MyDB1  
        FROM DISK='C:\MyDB1.bak'  
       WITH NORECOVERY,   
          MOVE 'MyDB1_Data' TO   
           'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.mdf',   
          MOVE 'MyDB1_Log' TO  
           'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.ldf';  
      GO  
      
  5. Una vez restaurada la copia de seguridad completa, debe crearse una copia de seguridad del registro en la base de datos principal. Por ejemplo, la siguiente instrucción Transact-SQL realiza una copia de seguridad del registro en un archivo de copia de seguridad denominado E:\MyDB1_log.trn:

    BACKUP LOG MyDB1   
      TO DISK = 'E:\MyDB1_log.trn'   
    GO  
    
  6. Para poder unir la base de datos a la réplica secundaria, se debe aplicar la copia de seguridad de registros obligatoria (y las copias de seguridad de registros subsiguientes).

    Por ejemplo, la siguiente instrucción de Transact-SQL restaura el primer registro de C:\MyDB1.trn:

    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=1, NORECOVERY  
    GO  
    
  7. Si se producen copias de seguridad de registros adicionales antes de que la base de datos se una a la réplica secundaria, también debe restaurar todas esas copias de seguridad de registros, en secuencia, en la instancia del servidor que hospeda la réplica secundaria mediante RESTORE WITH NORECOVERY.

    Por ejemplo, la siguiente instrucción de Transact-SQL restaura dos registros adicionales de E:\MyDB1_log.trn:

    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=2, NORECOVERY  
    GO  
    RESTORE LOG MyDB1   
      FROM DISK = 'E:\MyDB1_log.trn'   
        WITH FILE=3, NORECOVERY  
    GO  
    

Uso de PowerShell

Para preparar una base de datos secundaria

  1. Si necesita crear una copia de seguridad reciente de la base de datos principal, cambie el directorio (cd) a la instancia del servidor que hospeda la réplica principal.

  2. Use el cmdlet Backup-SqlDatabase para crear cada una de las copias de seguridad.

  3. Cambie el directorio (cd) a la instancia del servidor que hospeda la réplica secundaria.

  4. Para restaurar las copias de seguridad de base de datos y del registro de cada base de datos principal, use el cmdlet restore-SqlDatabase y especifique el parámetro de restauración NoRecovery . Si las rutas de acceso de archivo difieren entre equipos que hospedan la réplica principal y la réplica secundaria de destino, utilice también el parámetro de restauración RelocateFile .

    Nota:

    Para ver la sintaxis de un cmdlet, use el cmdlet Get-Help en el entorno de SQL Server PowerShell. Para más información, consulte Get Help SQL Server PowerShell.

  5. Para completar la configuración de la base de datos secundaria, debe unirla al grupo de disponibilidad. Para obtener más información, vea Combinar una base de datos secundaria con un grupo de disponibilidad (SQL Server).

Para configurar y usar el proveedor de SQL Server PowerShell

Ejemplo de comando y script de copias de seguridad y restauración

Los siguientes comandos de PowerShell realizan una copia de seguridad del registro de transacciones y una copia de seguridad completa de la base de datos en un recurso compartido de red y restauran las copias de seguridad de ese recurso compartido. En este ejemplo se supone que la ruta de acceso de archivo en que se restaura la base de datos es la misma que la ruta de acceso de archivo en que se creo la copia de seguridad de la base de datos.

# Create database backup  
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"  
# Create log backup  
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"  
# Restore database backup   
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"  
# Restore log backup   
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery -ServerInstance "DestinationMachine\Instance"  
  

Pasos siguientes

Para completar la configuración de la base de datos secundaria, debe unir la base de datos que se acaba de restaurar al grupo de disponibilidad. Para obtener más información, vea Combinar una base de datos secundaria con un grupo de disponibilidad (SQL Server).

Vea también

Información general de los grupos de disponibilidad AlwaysOn (SQL Server)
BACKUP (Transact-SQL)
RESTORE Argumentos (Transact-SQL)
RESTORE (Transact-SQL)
Solucionar problemas relativos a una operación de agregar archivos con error (grupos de disponibilidad AlwaysOn)