Rutas de recuperación

Es importante comprender las rutas de recuperación si se usan copias de seguridad diferenciales o de registros e, igualmente, si se recupera una base de datos a un momento anterior mediante uno de los métodos siguientes:

  • Realizar una restauración a un momento dado.

  • Realizar una recuperación sin restaurar antes todas las copias de seguridad de registros o la copia de seguridad diferencial más reciente.

Si recupera una base de datos a un momento anterior y comienza a utilizarla desde ese momento, se creará una nueva ruta de recuperación. La ruta de recuperación es la secuencia de datos y copias de seguridad de registros que han llevado a una base de datos a un momento determinado, ya sea mediante el uso normal o con una restauración de datos y de registros específicos. Una ruta de recuperación consta de un conjunto exclusivo de transformaciones específicas que han hecho evolucionar a la base de datos a lo largo del tiempo manteniendo su coherencia. En la ilustración siguiente se muestra la relación entre un punto de recuperación y las rutas de recuperación resultantes.

Punto de recuperación y rutas de recuperación resultantes

En las situaciones siguientes se crea una nueva ruta de recuperación ya que la base de datos no se restaura hasta el "fin de los tiempos". Después de esto, existen copias de seguridad que pueden llevar a la base de datos por dos o más rutas de recuperación y todas usan el mismo intervalo de LSN.

  • Restaurar una copia de seguridad completa y recuperar la base de datos sin utilizar ningún otro tipo de copia de seguridad.

  • Recuperar la base de datos hasta el final de una copia de seguridad diferencial que no sea la última realizada.

  • Restaurar una copia de seguridad completa y una diferencial y recuperar la base de datos sin aplicar las copias de seguridad existentes del registro de transacciones.

  • Recuperar la base de datos hasta el final de una copia de seguridad del registro de transacciones que no sea la última realizada.

  • Recuperar la base de datos hasta un momento determinado o una transacción con nombre incluida en una copia de seguridad del registro de transacciones.

En general, un punto de recuperación inicia una nueva ruta de recuperación si dicho punto hace que se reviertan las transacciones. Puede que las copias de seguridad existentes tengan números de secuencia de registro (LSN) superiores al LSN del punto de recuperación. Los LSN de estas copias de seguridad están en una rama de recuperación diferente de la nueva rama que se ha creado en la operación de recuperación actual.

Recomendación: si no desea crear una ruta de recuperación que tenga varias bifurcaciones de recuperación, realice un conjunto completo de copias de seguridad de datos tan pronto como pueda después de recuperar la base de datos. Con este método, se garantiza que todas las copias de seguridad se realizan en una única rama de recuperación. Para comprobarlo, consulte la columna last_recovery_fork_guid de la tabla backupset o el conjunto de resultados RESTORE HEADERONLY después de realizar una copia de seguridad de los datos.

Ejemplo de ruta de recuperación

Inicialmente, todas las copias de seguridad de una base de datos forman una ruta de recuperación única, como se muestra en la ilustración siguiente. En esta ilustración, la ruta de recuperación incluye una copia de seguridad de la base de datos, realizada a la hora t1, y tres copias de seguridad de registros, realizadas a las horas t2, t3 y t4.

Ruta de recuperación original

La ilustración siguiente muestra una bifurcación de recuperación que es el resultado de restaurar la base de datos a un punto anterior en el tiempo. Un problema con la copia de seguridad t4 hace que el administrador de la base de datos recupere la base de datos en el estado que tenía al final de la copia de seguridad de registros t3. Esta restauración produce una bifurcación de recuperación. A la hora t5, una nueva copia de seguridad de registros inicia una nueva bifurcación de recuperación, la bifurcación de recuperación 2.

Creación de una segunda rama de recuperación

Nota

La copia de seguridad de registros t5 incluye metadatos de bifurcación de recuperación que conectan esta copia de seguridad con la copia de seguridad de registros t3 en la bifurcación de recuperación 1. Para obtener más información sobre los metadatos de bifurcación de recuperación, vea "Administrar bifurcaciones de recuperación" más adelante en este tema.

El ejemplo de la ilustración anterior crea una nueva ruta de recuperación, que se muestra en la ilustración siguiente. La nueva ruta de recuperación incluye algunas de las copias de seguridad de la bifurcación de recuperación 1 (t1 hasta t3) y todas las copias de seguridad de registros de la bifurcación de recuperación 2 (t5 hasta t9). Desde el punto de vista de esta ruta de recuperación, la copia de seguridad de registros t4 está obsoleta.

Nueva ruta de recuperación

Después de una restauración a un momento dado, la copia de seguridad siguiente siempre produce una bifurcación de recuperación. En la ilustración siguiente, una restauración a un momento dado se completa durante la operación de copia de seguridad de registros t4. La recuperación de la base de datos a ese momento dado produce una bifurcación de recuperación. A continuación, se crea una copia de seguridad de registros en la base de datos recuperada a la hora t5, se establece la bifurcación de recuperación 2 y se crea una nueva ruta de recuperación. La primera copia de seguridad de registros de la nueva bifurcación, t5, incluye el mismo primer LSN que la copia de seguridad de registros t3 y lo reemplaza. Por consiguiente, las copias de seguridad t3 y t4 están obsoletas en la nueva ruta de recuperación.

Nueva ruta de recuperación después de una restauración a un momento dado

Para restaurar las copias de seguridad en esta nueva ruta de recuperación, la secuencia de restauración es: t1, t2 y t5. Como las copias de seguridad futuras se realizan en la bifurcación de recuperación 2, se incorporarán en la nueva ruta de recuperación.

Para realizar una restauración y realizar una puesta al día con una ruta antigua

Normalmente, cuando existen varias rutas de recuperación, la más reciente es la ruta de acceso preferida para restaurar la base de datos. Se recomienda evitar el uso de una ruta de recuperación antigua, Sin embargo, si fuera necesario, puede realizar una puesta al día con una ruta antigua, si sigue la secuencia de las copias de seguridad realizadas antes de la creación de la ruta de recuperación actual. Por ejemplo, puede utilizar las copias de seguridad realizadas antes de una recuperación a un momento dado para alcanzar los puntos posteriores en el tiempo con la ruta antigua.

Por ejemplo, según las copias de seguridad creadas en la ilustración anterior, después de crear la copia de seguridad de registros 5, aún se puede restaurar a partir de la copia de seguridad completa de la base de datos realizada a la hora t1 hasta el final de la copia de seguridad de registros t4. Ésta se encuentra en la ruta de recuperación antigua.

Para realizar una restauración y realizar una puesta al día desde una ruta antigua hasta una nueva

SQL Server Database Engine (Motor de base de datos de SQL Server) impide que una secuencia de restauración utilice copias de seguridad que no van juntas, es decir, que intenta realizar una puesta al día siguiendo dos rutas de recuperación distintas. Esta restricción permite mantener la coherencia de una base de datos tras una recuperación.

Para realizar una restauración y una puesta al día con una nueva ruta de recuperación, construya secuencias de restauración distintas para las copias de seguridad realizadas antes y después del punto de recuperación.

  1. Restaure las copias de seguridad realizadas antes de la recuperación que aportó la nueva ruta de recuperación, excluyendo la que incluya el punto de recuperación.

  2. Realice una puesta al día con la nueva ruta de recuperación restaurando las copias de seguridad realizadas desde la creación de la ruta de recuperación.

Administrar bifurcaciones de recuperación

Una rama de recuperación es una serie de LSN que comparten el mismo GUID. Una ruta de recuperación describe una serie de LSN desde un punto de inicio (LSN o GUID) hasta un extremo (LSN o GUID). La serie de LSN de una ruta de recuperación puede incluir una o varias ramas de recuperación desde el principio hasta el final. Se creará una nueva rama de recuperación cuando se cree una base de datos y RESTORE WITH RECOVERY genere una bifurcación de recuperación.

Una bifurcación de recuperación es el punto (LSN o GUID) en el que se inicia una nueva rama de recuperación cada vez que se ejecuta RESTORE WITH RECOVERY. Cada bifurcación de recuperación determina una relación entre las ramas de recuperación primarias y secundarias.

La recuperación de la base de datos establece el estado de la base de datos completa, incluido el siguiente LSN, en el punto de recuperación. A continuación, se vuelven a utilizar los LSN, empezando con fork_point_lsn. Por lo tanto, cuando se construye una secuencia de restauración, se deben vincular las copias de seguridad mediante la bifurcación de recuperación además del LSN, porque puede que exista el mismo LSN en más de una bifurcación. En la siguiente ilustración se muestra la forma en la que se reutilizan los LSN. Se muestra cómo se reutilizan LSN en diferentes bifurcaciones de recuperación. Los cuadros verdes en la ilustración indican dos copias de seguridad que utilizan el mismo LSN.

Cómo se reutilizan LSN en diferentes bifurcaciones de recuperación

Si una secuencia de restauración debe incluir copias de seguridad que pasan por una bifurcación de recuperación, se debe construir de modo que las copias de seguridad utilizadas sigan la ruta de recuperación correcta hasta el punto de recuperación. Con este propósito, las copias de seguridad incluyen un primer GUID de bifurcación de recuperación y un último GUID de bifurcación de recuperación.

Estos GUID, junto con otros metadatos relevantes para realizar el seguimiento de las rutas de recuperación, se almacenan en la tabla del historial backupset y también los devuelve la instrucción RESTORE HEADERONLY. La tabla siguiente resume los valores de metadatos relevantes para la generación de secuencias de restauración que pasan por una bifurcación de recuperación. Observe que los nombres de columna para estos valores son diferentes para la tabla de historial y el conjunto de resultados de la instrucción RESTORE HEADERONLY:

LSN

Descripción

Nombre en la columna backupset

Nombre en la columna RESTORE HEADERONLY

Primer GUID de bifurcación de recuperación

Id. de la bifurcación de recuperación inicial.

first_recovery_fork_guid

FirstRecoveryForkID

Último GUID de bifurcación de recuperación

Id. de la bifurcación de recuperación final.

last_recovery_fork_guid

RecoveryForkID

Primer LSN

Número de secuencia de registro de la primera entrada de registro del conjunto de copia de seguridad o de la más antigua.

first_lsn

FirstLSN

Último LSN

Número de secuencia de registro de la siguiente entrada del registro después del conjunto de copia de seguridad.

last_lsn

LastLSN

LSN de punto de bifurcación

Número de secuencia de registro de un punto de bifurcación si el primer GUID de punto de recuperación no es igual que el último GUID de punto de recuperación. De lo contrario, no se produce ninguna bifurcación de recuperación en la copia de seguridad y el LSN de punto de bifurcación es NULL.

fork_point_lsn

ForkPointLSN

GUID de base diferencial

Para una copia de seguridad diferencial con una única copia de seguridad base, el valor es el identificador único de la base diferencial.

Para las copias de seguridad diferenciales con varias copias de seguridad base, el valor es NULL y la base diferencial debe determinarse en el nivel de archivo. Para obtener más información, vea backupfile (Transact-SQL).

Para los tipos de copia de seguridad no diferenciales, el valor es NULL.

differential_base_guid

DifferentialBaseGUID

El resto de esta documentación utiliza sólo los nombres de los valores de la tabla de historial backupset.

  • El primer y el último GUID de bifurcación de recuperación se utilizan para vincular las copias de seguridad con el fin de asegurarse de que la secuencia sigue la bifurcación adecuada. Para cada copia de seguridad de registros de la secuencia que se restaurará, first_recovery_fork_guid debe ser igual a last_recovery_fork_guid de la copia de seguridad anterior en la secuencia.

    first_recovery_fork_guid = last_recovery_fork_guid

  • También se deben vincular las copias de seguridad de datos y diferenciales.

    Si la copia de seguridad de registros incluye tanto el último LSN de una copia de seguridad completa o diferencial de la base de datos como un punto de bifurcación, la prueba de vinculación dependerá de la ubicación del último LSN con respecto al punto de bifurcación.

    Las pruebas de vinculación son las siguientes, con valores de backupset:

    • Si el valor de last_lsn es menor o igual que el valor de fork_point_lsn, el valor de last_recovery_fork_guid de la copia de seguridad de datos o diferencial debe ser igual al valor de first_recovery_fork_guid de la copia de seguridad de registros. En la siguiente ilustración se muestra un caso en el que el valor de last_lsn es menor que el valor de fork_point_lsn.

      last_lsn es menor que fork_point_lsn

    • Si el valor de last_lsn es mayor que el valor de fork_point_lsn, el valor de last_recovery_fork_guid de la copia de seguridad de datos o diferencial debe ser igual al valor de last_recovery_fork_guid de la copia de seguridad de registros. En la siguiente ilustración se muestra un caso en el que el valor de last_lsn es mayor que el valor de fork_point_lsn.

      last_lsn es mayor que fork_point_lsn

  • En el caso de una copia de seguridad diferencial, busque la base diferencial mediante backupset.differential_base_guid.

    Si la diferencial es multibase, el valor de backupset.differential_base_guid será NULL y deberá determinar las bases diferenciales archivo por archivo mediante backupfile.differential_base_guid.