estrategias de recuperación de datos en sql server

10
Estrategias de recuperación de datos en SQL Server Francisco Otero Otero

Upload: krasis-press

Post on 25-Jun-2015

5.132 views

Category:

Documents


1 download

DESCRIPTION

A pesar de los años que el sistema de backup y restoring de SQL Server lleva sin sufrir cambios en sus opciones básicas, es incomprensiblemente frecuente encontrar sistemas en producción con datos sensibles funcionando en el modelo de recuperación simple.La correcta configuración de nuestras copias de seguridad nos evitará los riesgos asociados a la pérdida accidental de datos, modificación por error de los mismos, etc...El objetivo de este documento es describir de forma precisa y resumida los procedimientos de actuación ante los siguientes supuestos:· Recuperación de una base de datos a una fecha y hora concreta de cualquier día de la semana en curso.· Recuperación de una base de datos a una fecha y hora concreta del día actual.· Marcado de transacciones en el servidor de base de datos y recuperación a una transacción con nombre.

TRANSCRIPT

Page 1: Estrategias de recuperación de datos en SQL Server

Estrategias de recuperación de datos en SQL Server Francisco Otero Otero

Page 2: Estrategias de recuperación de datos en SQL Server

ESTRATEGIAS DE RECUPERACIÓN DE DATOS EN SQL SERVER Nivel: Intermedio por Francisco Otero Otero

A pesar de los años que el sistema de backup y restoring de SQL Server lleva sin sufrir cambios en sus opciones básicas, es incomprensiblemente frecuente encontrar sistemas en producción con datos sensibles funcionando en el modelo de recuperación simple.

Es cierto, no todos los sistemas necesitan un nivel de protección total: existen aplicativos donde un mecanismo que asegure la recuperación de la base de datos a una versión de hace 24h es aceptable.

En la mayoría de casos tener que volver a una versión de hace un día significará cómo mínimo la pérdida del trabajo de ese día. No pensemos en pérdida de datos como consecuencia de un cataclismo o una desgracia natural. Basta un desafortunado despiste en la ejecución de una consulta en el servidor para poder echar a perder una tabla entera.

La correcta configuración 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 actuación ante los siguientes supuestos:

Recuperación de una base de datos a una fecha y hora concreta de cualquier día de la semana en curso.

Recuperación de una base de datos a una fecha y hora concreta del día actual.

Marcado de transacciones en el servidor de base de datos y recuperación a una transacción con nombre.

Sistema de Backup Una base de datos puede estar en dos modos de recuperación: simple y completa. En el modelo de recuperación 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 días podemos volver a los puntos dónde se han hecho dichos backups.

Page 3: Estrategias de recuperación de datos en SQL Server

En un sistema de recuperación completa, la protección ante desastres es total, lo cual se visualiza en este gráfico que representa la “exposición a pérdida de datos” en un sistema con copias de seguridad completas, diferenciales y de log de transacciones:

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

Page 4: Estrategias de recuperación de datos en SQL Server

Para frecuencias inferiores recurriríamos a otros sistemas de alta disponibilidad, como puede ser LogShipping o Mirroring.

El modelo que se presenta en este artículo es mucho más sencillo: consta de un único log backup justo antes de cada full backup. Ambas copias de seguridad se harán diariamente con el nombre del día de la semana en el que se ejecutan, y dentro del mismo trabajo. Se utilizarán archivos distintos para facilitar la administración, asignando como nombre de archivo el nombre del día de la semana con extensión .bak para el full backup y .trn para el del log de transacciones.

El gráfico representa en qué momento se guardan los datos. Con las copias de seguridad completas (.bak) podríamos 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 programaríamos las copias de seguridad para ejecutarse una vez al día 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 necesitaríamos utilizar el BBDD1_Mi.bak para retroceder hasta el jueves a las 4:00 y después aplicar el BBDD1_Ju.trn para avanzar hasta las 15:30.

Si el punto al que queremos volver aún no está respaldado en ninguna copia de log de transacciones, siempre podremos generar uno cuando lo necesitemos. Se trata del archivo que en el gráfico aparece cómo 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.

Recuperación – casos prácticos

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

Page 5: Estrategias de recuperación de datos en SQL Server

1. Abrimos el menú de restauración de BBDD. Seleccionamos el backup completo más reciente anterior al punto de restauración 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 técnica para poder comparar las versiones de la base de datos y recuperar sólo 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 restauración todavía no dejará a la base de datos en el punto deseado, marcamos la segunda opción en las opciones del estado de recuperación: “Dejar la base de datos no operativa...” (ver siguiente figura). Esto nos permite que la base de datos quede en un estado de restauración para seguir con el proceso. Al efectuar esta operación sobre una nueva base de datos no tendremos ninguna incidencia, en cambio si se trata de hacer esta restauración sobre una base de datos en uso necesitaríamos 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

Page 6: Estrategias de recuperación de datos en SQL Server

del día correspondiente. Botón derecho sobre la base de datos, y en el menú contextual vamos a Tasks·Restore·Transaction Log (en español Tareas·Restaurar·Log 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 sólo hasta la hora que queremos.

6. En esta ocasión dejamos la opción por defecto “dejar la base de datos lista para su uso revirtiendo las transacciones no confirmadas”, ya que alcanzamos el punto deseado.

¡Listo!

Page 7: Estrategias de recuperación de datos en SQL Server

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 día actual, tenemos un backup completo previo de la última noche, pero nos falta un log de transacciones que cubra las transacciones del día 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 opción “copy_only” (“Copia de seguridad de sólo copia”), de forma que esta copia no nos influya en modo alguno en la serie de backups programados diariamente.

A continuación procedemos de la misma forma que antes: restauración del último backup completo y restauración 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, deberíamos 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 ejecución de la consulta, sino que es fácil que se hayan colado otras transacciones antes o después de lo que anotamos. Existe una forma más cómoda de identificar una transacción en el log para volver a ella cuando queramos: las transacciones con nombre.

1. Para crear una de estas transacciones utilizaremos la opción WITH MARK acompañando a la apertura de la transacción.

Page 8: Estrategias de recuperación de datos en SQL Server

2. Para restaurar a una transacción con nombre utilizamos el procedimiento habitual:

restauramos a copia completa dejando la base de datos en estado de recuperación, y al restaurar el registro de transacciones elegimos la opción Transacción 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

Page 9: Estrategias de recuperación de datos en SQL Server

Acerca del autor Fran Otero es Ingeniero Industrial e instructor certificado de Microsoft. Lleva varios años impartiendo formación presencial de certificación en programación 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 formación en tecnología Microsoft a través de nuestros cursos online y nuestros libros especializados, impartidos y escritos por conocidos profesionales de Microsoft. Visita nuestra página 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 distribución de las cuales se debe hacer con una licencia igual a la que regula esta obra original. Se debe citar la fuente.

Page 10: Estrategias de recuperación de datos en SQL Server