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:
- Restaurar una copia de seguridad reciente de la base de datos y las copias de seguridad de registros subsiguientes en cada instancia del servidor que hospede la réplica secundaria, usando para ello RESTORE WITH NORECOVERY
- 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, vea Requisitos previos para migrar desde grupos de trasvase de registros a grupos de disponibilidad AlwaysOn (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 Serverse recomienda que, si es posible, la ruta de acceso de archivo (incluida la letra de 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
De forma predeterminada, los permisos BACKUP DATABASE y BACKUP LOG corresponden 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 va a restaurar no existe en la instancia de servidor, la instrucción RESTORE requiere permisos CREATE DATABASE. Para obtener más información, vea RESTORE (Transact-SQL).
Use 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
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.
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.
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 página Opciones de RESTORE DATABASE, seleccione Dejar la base de datos no operativa y no revertir transacciones no confirmadas. Pueden restaurarse 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.
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
Creación de una copia de seguridad completa de base de datos (SQL Server)
Crear una copia de seguridad diferencial de una base de datos (SQL Server)
Para crear una copia de seguridad del registro
Para restaurar copias de seguridad
Restaurar una copia de seguridad diferencial de la base de datos (SQL Server)
Restaurar una copia de seguridad de registros de transacciones (SQL Server)
Restaurar una base de datos a una nueva ubicación (SQL Server)
Usar 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.
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.
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 para 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.
Si se han realizado copias de seguridad del registro de la base de datos principal desde que se realizó la copia de seguridad del registro obligatoria, deben copiarse también en la instancia de servidor que hospeda la réplica secundaria y aplicar cada una de ellas a la base de datos secundaria, empezando con la más antigua y utilizando siempre 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.
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 AdventureWorks2022
, que usa de forma predeterminada un modelo de recuperación simple.
Para utilizar la base de datos
AdventureWorks2022
, modifíquela para que utilice el modelo de recuperación completa:USE master; GO ALTER DATABASE MyDB1 SET RECOVERY FULL; GO
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. Puesto que se ha cambiado recientemente el modelo de recuperación, se especifica la opción WITH FORMAT para crear un conjunto de medios. 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:\
AdventureWorks2022
.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
Copie la copia de seguridad completa en la instancia del servidor que hospeda la réplica secundaria.
Restaure la copia de seguridad completa en la instancia del servidor que hospeda la réplica secundaria utilizando RESTORE WITH NORECOVERY. 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, letras de unidad diferentes), 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 usa WITH NORECOVERY para la base de datos secundaria en la base de datos 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
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
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
Si las copias de seguridad del registro adicionales se producen antes de que la base de datos se una a la réplica secundaria, también debe restaurar todas las copias de seguridad del registro, de forma secuencial, a 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
Usar PowerShell
Para preparar una base de datos secundaria
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.
Use el cmdlet Backup-SqlDatabase para crear cada una de las copias de seguridad.
Cambie el directorio (cd) a la instancia del servidor que hospeda la réplica secundaria.
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.
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)