Cómo restaurar sólo un grupo de archivos específico – Una restauración por etapas

¿Qué es una restauración por etapas?

Las restauraciones por etapas le permiten al usuario restaurar sólo grupos de archivos específicos de una base de datos en lugar de restaurar una base de datos completa. En casos de emergencia lo importante es obtener los datos necesarios tan pronto como sea posible, y restaurar el resto de los datos más tarde, mientras se dispone de los datos más importantes en línea. Este enfoque minimiza el tiempo de inactividad cuando ocurre un desastre.

Unos escenarios de restauración por etapas pueden ser:

  • Restauración por etapas en línea

    Cuando se realiza la restauración parcial, la base de datos está en línea y el grupo de archivos primario y todos los grupos de archivos secundarios que se han recuperado están disponibles. Los grupos de archivos que no se han incluido en el proceso de restauración permanecerán sin conexión, pero se pueden restaurar fácilmente cuando sea necesario, sin necesidad de desconectar la base de datos

  • Restauración por partes sin conexión

    De forma similar a la restauración por etapas en línea, la base de datos permanece en línea después de realizar la restauración parcial y todos los grupos de archivos que no se han restaurado permanecen sin conexión, pero se pueden restaurar cuando sea necesario al desconectar la base de datos.

  • Restauración por etapas para bases de datos con tablas con optimización para memoria

    Al realizar este tipo de restauración por etapas, es importante tener en cuenta el hecho de que existe una restricción importante para este caso. Se debe realizar una copia de seguridad y restauración de un grupo de archivos con optimización para memoria junto con el grupo de archivos primario:

    1. Si se restaura o se realiza una copia de seguridad del grupo primario, se debe especificar el grupo de archivos con optimización para memoria
    2. Si se restaura o se realiza una copia de seguridad de un grupo de archivos con optimización para memoria, se debe especificar el grupo principal

La restauración por etapas sin conexión es soportada por todas las versiones de SQL Server, pero la opción en línea sólo está disponible en la edición Enterprise.

Una secuencia de restauración por etapas comienza con la restauración del grupo de archivos primario. Con este paso una base de datos se pone en línea. Después de este paso, a medida que se restaura cada grupo de archivos secundario, sus datos están en línea y están disponibles para realizar consultas periódicamente.

Restauraciones por etapas en diferentes modelos de recuperación

Se pueden realizar restauraciones por etapas para ambos modelos de recuperación de bases de datos tanto simple como completo, o también modelos de recuperación por medio de registros de operaciones masivas con algunas diferencias, y los requisitos para realizar una restauración por etapas dependen del modelo de recuperación de base de datos. Sin embargo, una restauración por etapas es más flexible para las bases de datos con modelos de recuperación completo y por medio de registros de operaciones masivas.

Cuando una base de datos se encuentra en un modelo de recuperación Simple, una restauración por etapas recupera una base de datos en etapas y comienza con la restauración del grupo de archivos primario y todos los grupos de archivos secundarios de lectura y escritura en secuencia. Para bases de datos en modelo de recuperación simple, antes de una restauración por etapas, una base de datos debe tener una copia de seguridad completa o parcial de la base de datos.

Para bases de datos en modelo de recuperación completo, antes de que se inicie la restauración por etapas, un Administrador de Base de datos debe realizar copias del final del registro de la base de datos. Luego de eso, una restauración por etapas es la misma que en el modelo de recuperación simple comenzando con la restauración del grupo de archivos primario.

Para todos los modelos de recuperación una restauración por etapas comienza con una secuencia de restauración parcial que es una secuencia de restauración inicial. Esa secuencia restaura el grupo de archivos primario. Para bases de datos en modelo de recuperación simple, la restauración parcial también restaurará todos los grupos de archivos de lectura/escritura junto con el grupo de archivos primario. Durante la secuencia de restauración inicial, la base de datos debe estar desconectada. Luego de la restauración inicial, la base de datos está en línea y todos los grupos de archivos restaurados durante la restauración inicial están disponibles.

En nuestro artículo anterior escribimos sobre cómo hacer una copia de seguridad de un grupo de archivos específico, así como escenarios sobre cómo realizar un particionamiento en varios grupos de archivos para mejorar el rendimiento y la administración.

En este artículo explicaremos cómo restaurar un grupo de archivos específico y cómo realizar una restauración por etapas utilizando T-SQL y ApexSQL Backup.

Las restauraciones por etapas no son soportadas por SQL Server Management Studio ni por los Planes de mantenimiento.

Para el propósito de este artículo hemos creado una nueva base de datos, FilegroupRestores, con dos grupos de archivos y hemos realizado las copias de seguridad por completo y del registro de transacciones.

Restaurar por etapas utilizando T-SQL

La secuencia de restauración parcial para cada modelo de recuperación comienza con la instrucción RESTORE DATABASE para restaurar una copia de seguridad completa de la base de datos y se debe especificar la opción WITH PARTIAL. En la primera restauración parcial se pueden restaurar los grupos de archivos necesarios, pero la primera secuencia debe incluir el grupo de archivos PRIMARY.

En este ejemplo, nuestra base de datos está en un modo de recuperación completo, por lo que también deberemos restaurar los registros de transacciones:

RESTORE DATABASE FilegroupRestores FILEGROUP = 'Primary'
FROM DISK = N'E:\FGBackups\BackupFG_full.bak'
WITH PARTIAL
	,NORECOVERY

RESTORE LOG FilegroupRestores
FROM DISK = N'E:\FGBackups\BackupFG_tlog1.trn'
WITH NORECOVERY

RESTORE LOG FilegroupRestores
FROM DISK = N'E:\FGBackups\BackupFG_tlogtail.trn'
WITH RECOVERY

Con esta consulta hemos recuperado sólo un grupo de archivos PRIMARY y realizado una restauración por etapas. Para comprobar el estado del otro grupo de archivos debemos utilizar la siguiente consulta:

SELECT NAME AS FilegroupName
	,state_desc AS RecoveryStatus
FROM FilegroupRestores.sys.database_files;
GO

Esta consulta nos da el estado de nuestros grupos de archivos:

Como podemos ver, el grupo de archivos PRIMARY está restaurado y en línea, y podemos continuar recuperando el resto de los grupos de archivos deseados.

Restauración por etapas utilizando ApexSQL Backup

Para evitar escribir scripts de T-SQL y restaurar todos los grupos de archivos ya que SQL Server Management Studio no permite restaurar un grupo de archivos específico ya que requiere restaurar todos los grupos de archivos a la vez, utilice ApexSQL Backup una herramienta de SQL Server diseñada específicamente para administrar copias de seguridad y restauraciones de SQL incluyendo archivos y copias de seguridad, y restauraciones de grupos de archivos..

Para realizar una restauración por etapas en ApexSQL Backup:

  1. En el panel Servidores, seleccione una base de datos desde la que desee restaurar los grupos de archivos y seleccione el botón History del menú principal:

  2. Seleccione una copia de seguridad del grupo de archivos y seleccione la opción Restaurar archivos y grupos de archivos:

  3. En el cuadro de diálogo Restore Files and Filegroups, seleccione los grupos de archivos que desea restaurar:

  4. Haga clic en la pestaña ”Options” en el panel izquierdo y en la sección Copias del final del registro marque la casilla de verificación Take a tail log backup before restore para bases de datos en modelo de recuperación completo:

    La base de datos dejada en estado de restauración se comprueba cuando el usuario desea que una base de datos permanezca no disponible y no se puedan realizar más transacciones en este momento.

    Al seleccionar la opción Script del diálogo se mostrará una secuencia de comandos de T-SQL creada por ApexSQL Backup:

  5. Bajo las opciones de Restaurar, en la lista desplegable Recovery state, seleccione una de las siguientes opciones:

  6. La opción RESTORE WITH RECOVERY es la configuración predeterminada y coloca a la base de datos en línea y disponible para los usuarios. Esta opción se utiliza comúnmente en los siguientes escenarios:

    • La base de datos no se recuperó al restaurar la última copia de seguridad en una secuencia de restauración y ahora es necesario ponerla en línea
    • La base de datos está en el modo de espera, y es necesario que esté disponible para la actualización sin aplicar otra copia de seguridad del registro

    La opción RESTORE WITH NORECOVERY se utiliza para evitar que la base de datos esté disponible para los usuarios. Esta opción se utiliza en la copia de datos y en el servidor secundario al enviar registros.

    La opción RESTORE WITH STANDBY deja a la base de datos (después de restaurar una imagen de copia de seguridad) en un estado que permite restaurar las imágenes de copia de seguridad adicionales y permite el acceso de sólo lectura a los usuarios.

  7. Cuando se especifiquen todos los ajustes, haga clic en el botón Restore y aparecerá un mensaje de éxito:

Como lo hicimos anteriormente en un ejemplo con T-SQL, podemos comprobar el estado de nuestros grupos de archivos:

febrero 23, 2017