Está en la página 1de 10

Estrategias de recuperacin de datos en SQL Server

Francisco Otero Otero

ESTRATEGIAS DE RECUPERACIN DE DATOS EN SQL SERVER


Nivel: Intermedio

por Francisco Otero Otero

A pesar de los aos que el sistema de backup y restoring de SQL Server lleva sin sufrir cambios en sus opciones bsicas, es incomprensiblemente frecuente encontrar sistemas en produccin con datos sensibles funcionando en el modelo de recuperacin simple. Es cierto, no todos los sistemas necesitan un nivel de proteccin total: existen aplicativos donde un mecanismo que asegure la recuperacin de la base de datos a una versin de hace 24h es aceptable. En la mayora de casos tener que volver a una versin de hace un da significar cmo mnimo la prdida del trabajo de ese da. No pensemos en prdida de datos como consecuencia de un cataclismo o una desgracia natural. Basta un desafortunado despiste en la ejecucin de una consulta en el servidor para poder echar a perder una tabla entera. La correcta configuracin de nuestras copias de seguridad nos puede evitar todos estos riesgos, sin apenas contraindicaciones. El objetivo de este manual es describir de forma precisa y resumida los procedimientos de actuacin ante los siguientes supuestos: Recuperacin de una base de datos a una fecha y hora concreta de cualquier da de la semana en curso. Recuperacin de una base de datos a una fecha y hora concreta del da actual. Marcado de transacciones en el servidor de base de datos y recuperacin a una transaccin con nombre.

Sistema de Backup
Una base de datos puede estar en dos modos de recuperacin: simple y completa. En el modelo de recuperacin simple las copias de seguridad nos permiten volver a puntos concretos en el tiempo. Es decir, con una estrategia de backup completo diario, guardando la de los ltimos siete das podemos volver a los puntos dnde se han hecho dichos backups.

En un sistema de recuperacin completa, la proteccin ante desastres es total, lo cual se visualiza en este grfico que representa la exposicin a prdida de datos en un sistema con copias de seguridad completas, diferenciales y de log de transacciones:

El modelo puede ser tan complejo cmo necesitemos: existen modelos con copias de seguridad de log de transacciones cada minuto.

Para frecuencias inferiores recurriramos a otros sistemas de alta disponibilidad, como puede ser LogShipping o Mirroring. El modelo que se presenta en este artculo es mucho ms sencillo: consta de un nico log backup justo antes de cada full backup. Ambas copias de seguridad se harn diariamente con el nombre del da de la semana en el que se ejecutan, y dentro del mismo trabajo. Se utilizarn archivos distintos para facilitar la administracin, asignando como nombre de archivo el nombre del da de la semana con extensin .bak para el full backup y .trn para el del log de transacciones.

El grfico representa en qu momento se guardan los datos. Con las copias de seguridad completas (.bak) podramos volver a puntos concretos en el tiempo; en este caso a los momentos en que se realizan las copias de seguridad. En el sistema propuesto programaramos las copias de seguridad para ejecutarse una vez al da a las 4:00 am, que es una hora de poca actividad en el servidor. Para volver a un punto en el tiempo distinto a las 4:00, tenemos que utilizar el log de transacciones (archivos .trn) correspondiente. Por ejemplo, para volver al jueves a las 15:30 necesitaramos utilizar el BBDD1_Mi.bak para retroceder hasta el jueves a las 4:00 y despus aplicar el BBDD1_Ju.trn para avanzar hasta las 15:30. Si el punto al que queremos volver an no est respaldado en ninguna copia de log de transacciones, siempre podremos generar uno cuando lo necesitemos. Se trata del archivo que en el grfico aparece cmo tail.trn. Este archivo nos permite partir del backup completo del viernes a las 4:00 y avanzar hasta el punto actual o cualquiera intermedio.

Recuperacin casos prcticos


Punto en el tiempo pasado
Supongamos que hoy es viernes, a las 11 de la maana y necesitamos restaurar una base de datos al lunes a las 14:30.

1. Abrimos el men de restauracin de BBDD. Seleccionamos el backup completo ms reciente anterior al punto de restauracin deseado. En este caso ser el archivo BBDDx_Lu.bak, que restaura la BBDD al lunes 4:00 am.

2. Seleccionamos un nuevo nombre para la base de datos restaurada, para no sobrescribir la actual. Es aconsejable esta tcnica para poder comparar las versiones de la base de datos y recuperar slo lo que nos interese mediante una consulta, en lugar de revertir toda la base de datos y perder todos los cambios existentes. 3. Puesto que esta restauracin todava no dejar a la base de datos en el punto deseado, marcamos la segunda opcin en las opciones del estado de recuperacin: Dejar la base de datos no operativa... (ver siguiente figura). Esto nos permite que la base de datos quede en un estado de restauracin para seguir con el proceso. Al efectuar esta operacin sobre una nueva base de datos no tendremos ninguna incidencia, en cambio si se trata de hacer esta restauracin sobre una base de datos en uso necesitaramos antes obtener acceso exclusivo.

4. Ahora la base de datos est exactamente igual que estaba en el punto que hicimos el backup, incluyendo las transacciones sin confirmar, de ah que no est operativa. Para avanzar hasta la hora que nos interesaba tenemos que recurrir al log de transacciones

del da correspondiente. Botn derecho sobre la base de datos, y en el men contextual vamos a TasksRestoreTransaction Log (en espaol TareasRestaurarLog de Transacciones), como se muestra en la figura siguiente:

5. Puesto que estamos en el lunes a las 4:00 y queremos avanzar hasta el lunes a las 15:30 utilizamos el archivo de logs del martes: BBDD1_Ma.trn. No necesitamos restaurar todo el archivo, sino slo hasta la hora que queremos.

6. En esta ocasin dejamos la opcin por defecto dejar la base de datos lista para su uso revirtiendo las transacciones no confirmadas, ya que alcanzamos el punto deseado. Listo!

Acabo de ejecutar un Delete sin Where, qu hago?


El sistema anterior nos permite volver a un punto anterior que est cubierto partiendo de un log de transacciones y un backup completo previo. Si acabamos de hacer algo indebido, o queremos volver a un punto anterior en el da actual, tenemos un backup completo previo de la ltima noche, pero nos falta un log de transacciones que cubra las transacciones del da en curso. 1. Podemos crearlo siempre que queramos, lo nico que hay que hacer es copia de seguridad del log de transacciones y marcar la opcin copy_only (Copia de seguridad de slo copia), de forma que esta copia no nos influya en modo alguno en la serie de backups programados diariamente.

A continuacin procedemos de la misma forma que antes: restauracin del ltimo backup completo y restauracin de este registro de transacciones hasta un punto concreto.

Siendo previsores: transacciones con nombre


Cuando accedemos al servidor de bases de datos para lanzar alguna consulta de forma manual, deberamos siempre tomar ciertas precauciones. Entre ellas la de anotar la fecha y hora exacta en la que lanzamos nuestra consulta, de forma que en caso de error sepamos restaurar la base de datos al punto exacto para dejarlo todo como estaba. Si la base de datos est en uso, nuestra hora exacta puede no ser la de ejecucin de la consulta, sino que es fcil que se hayan colado otras transacciones antes o despus de lo que anotamos. Existe una forma ms cmoda de identificar una transaccin en el log para volver a ella cuando queramos: las transacciones con nombre. 1. Para crear una de estas transacciones utilizaremos la opcin WITH MARK acompaando a la apertura de la transaccin.

2. Para restaurar a una transaccin con nombre utilizamos el procedimiento habitual: restauramos a copia completa dejando la base de datos en estado de recuperacin, y al restaurar el registro de transacciones elegimos la opcin Transaccin marcada en lugar de a un momento dado.

Referencias
Backup Under the Full Recovery Model Backup Under the Simple Recovery Model Recovery Model Overview Using Marked Transactions (Full Recovery Model) Copy-Only Backups

Acerca del autor


Fran Otero es Ingeniero Industrial e instructor certificado de Microsoft. Lleva varios aos impartiendo formacin presencial de certificacin en programacin web, escritorio y SQL Server en Krasis. Puedes visitar su blog en http://geeks.ms/blogs/franotero

Acerca de campusMVP
CampusMVP te ofrece la mejor formacin en tecnologa Microsoft a travs de nuestros cursos online y nuestros libros especializados, impartidos y escritos por conocidos profesionales de Microsoft. Visita nuestra pgina en www-campusmvp.com

Reconocimiento - NoComercial - CompartirIgual (by-nc-sa): No se permite un uso comercial de este documento ni de las posibles obras derivadas, la distribucin de las cuales se debe hacer con una licencia igual a la que regula esta obra original. Se debe citar la fuente.

También podría gustarte