Está en la página 1de 8

Backup and Recovery en SQL Server 2008R2

Tipos de Backup
Realizar un backup a una base de datos es diferente a realizar backups sobre archivos en un
servidor. Las bases de datos contienen logs de transacciones y en algunos casos tambin es
necesario realizar un backup sobre ellos.
SQL Server incluye varias opciones para realizar un backup a una base de datos. A continuacin,
se describen algunas de stas.

Full Database Backup: Tiene como propsito capturar toda la data que se encuentra
almacenada dentro de una base de datos. Asimismo, es posible utilizarlo para recrear una base de
datos en su totalidad. Este mtodo de backup se encuentra disponible sin importar el recovery
model configurado para la base de datos.
Debido a que los backups no son instantneos y pueden ejecutarse mientras existen usuarios
conectados, existe la posiblidad de presentarse alguna inconsistencia. Sin embargo, SQL no
permite que esto suceda forzando una serie de pasos durante el full backup:

Lock de la base de datos, bloqueando todas la transacciones


Coloca una marca en el log de transacciones
Retira el lock sobre la base de datos
Backup de la base de datos
Lock de la base de datos, bloqueando todas las transacciones.
Coloca una marca en el log de transacciones
Retira el lock sobre la base de datos
Extrae todas las transacciones entre las dos marcas del log de transacciones y son agregadas al
backup.

BACKUP DATABASE AdventureWorks2008R2

TO DISK='C:\BKFull AdventureWorks2008R2.bak ' WITH INIT


El siguiente es el comando bsico para ejecutar backup:

Este tipo de backups se debe utilizar en los siguientes casos:


Cuando se quiere replicar el ambiente de produccin para poder analizar el comportamiento de
la base de datos o de la aplicacin que utiliza la base de datos.
Como mnimo toda base de datos debe tener un backup de este tipo. Debido que ante cualquier
falla de la base de datos se puede volver a levantar la data hasta el instante en que se realiz el
ltimo backup full.
Nota.- Es necesario ejecutar backups de las base de datos del sistema: msdb, master y
model.

Differential Backup: Capturan, nicamente, la data que ha sido modificada desde el


ltimo full database backup. Al igual que el full backup, este mtodo se encuentra disponible sin
importar el recovery model configurado para la base de datos. Cada differential backup contiene
toda la informacin de los previos differential backups, esto debido a que no es un backup
incremental.

El siguiente es el comando bsico para ejecutar un differential backup:

BACKUP DATABASE AdventureWorks2008R2


TO DISK='C:\BKDiff\AdventureWorks2008R2.bak' WITH DIFFERENTIAL

Este tipo de Backup se debe utilizar en los siguientes casos:


Cuando se tienen aplicaciones con cierres contables diarios. Por ejemplo, aplicaciones que
interactuan con una bolsa de valores que tienen un horario de cierre para la maana y otro para la
tarde. Aqu se podra realizar un backup diferencial despus de cada cierre, para asi resguardar la
data ingresada entre cada cierre. Por supuesto el primer backup tendra que ser de tipo Full.


Transaction Log Backup: Este tipo de backups slo puede ser ejecutado sobre base de
datos que tengan configurado el recovery model en Full o Bulk-Logged. Adicionalmente, slo
podrn ejecutarse despus que se haya completado un full backup.
Los log Backups contienen el active log. SQL Server realiza un backup de todas las
transacciones hasta que se encuentra con una transaccin abierta.

El siguiente es el comando bsico para ejecutar un differential backup:

BACKUP LOG AdventureWorks2008R2


TO DISK='C:\BKLog\AdventureWorks2008R2.trn' WITH INIT

Este tipo de backup se debe utilizar:


Para aplicaciones consideradas crticas y altamente transaccionales, en las cuales no se tolera
perder informacin.

Filegroup Backup: Representa una alternativa para los full backups. Permite capturar la
data de un filegroup individual en lugar de toda la base de datos.
Se requiere que la base de datos se encuentre configurada con el recovery model Full o Bulk Logged.

El siguiente es el comando bsico para ejecutar un Filegroup Backup:

BACKUP DATABASE AdventureWorks2008R2 FILEGROUP='SECUNDARIO'


TO DISK='C:\BKFileGroup\AdventureWorks2008R2.bak' WITH INIT

Este tipo de backup se debe utilizar en los siguientes casos:

Para base de datos que tienen Filegroup con data de slo lectura y filegroups transaccionales,
realizando el backup de la filegroup donde slo se modifica la data, es decir del filegroup
transaccional.
Cuando el tamao de una base de datos representa una dificultad para ejecutar un backup o
restore de toda la data. Es decir , que el backup es demasiado grande y no se obtenga el espacio
suficiente para realizar un full backup.

Nota: Es importante mencionar que los archivos de backups no deben ser guardados en el mismo
servidor, ni creados en el disco donde se encuentra instalado el sistema operativo:
Si los backups son creados en el mismo disco donde se encuentra el sistema operativo, puede
ocasionar que este se quede sin espacio libre, originando lentitud en el servidor y hasta pueda
originar que el servidor se reinicie. Es recomendable tener una unidad de disco exclusiva para
backups.
Si los archivos de backups se mantienen en el mismo servidor donde se encuentra la base de
datos, se corre el riesgo que, si este servidor tuviera algn problema de disco, los backups
tambin se perderan. Es recomendable mover los archivos de backup a otra ubicacin fsica o en
todo caso a sistema de cinta.

Tipos de Restore
Los tipos de restore se adecuan segn el tipo de backup que se tiene. Es decir, si se
quiere realizar un restore de un archivo de backup log, se realizar un restore log. Del mismo
modo, para un backup full se realizar un restore full, para un backup diferencial se tendr que
realizar un restore diferencial.

Restore - Full Backup: Muchas operaciones de restore se inician recreando la base de


datos en algn punto especfico del tiempo y luego, se restauran subsiguientes backups para
llevar la base de datos hacia un punto del tiempo ms particular. Este proceso empieza con el
restore de un full backup.

Mejores Prcticas: En caso la base de datos ya exista en la instancia, el restore de un full


backup sobreescribe la base de datos con el mismo nombre. En caso la base de datos no exista, el
proceso de restore crea los datafiles y filegroups antes de realizar el restore de la data.

Es recomendable no eliminar las bases de datos antes de un restore, si se tiene planeado


sobreescribirla. Esto debido a que la creacin de los files pueden consumir una significante suma
de tiempo.

El siguiente comando realiza un full database restore:

RESTORE DATABASE AdventureWorks2008R2


FROM DISK='C:\BKFull\AdventureWorks2008R2.bak' WITH REPLACE

La opcin REPLACE indica sobreescribir la base de datos existente, llamada Otras opciones
importantes son:

WITH RECOVERY: La base de datos se coloca online y se aceptan transacciones.


WITH NORECOVERY: La base de datos o filegroup permanece en estado RESTORING. Es
posible restaurar backups adicionales, tal como differential o transaction log.

Restore - Differential Backup: Para restaurar un differential backup primero se debe restaurar
un full backup con la opcin NORECOVERY.

El siguiente comando realiza un differential database restore:

RESTORE DATABASE AdventureWorks2008R2


FROM DISK='C:\BKFull\AdventureWorks2008R2.bak' WITH NORECOVERY

RESTORE DATABASE AdventureWorks2008R2

FROM DISK='C:\BKDiff\AdventureWorks2008R2.bak' WITH RECOVERY

El proceso para restaurar un filegroup backup es similar al differential backup, ya que tambin se
requiere restaurar primero un full backup con la opcin NO RECOVERY.

El siguiente comando realiza un filegroup database restore:

RESTORE DATABASE AdventureWorks2008R2 FILEGROUP='FG1'


FROM DISK='C:\BKFileGroup\AWFG1.bak' WITH NORECOVERY

RESTORE DATABASE AdventureWorks2008R2


FROM DISK='C:\BKFileGroupDiff\FG1DIFF1.bak' WITH NORECOVERY

Restore - Transaction Log Backup: Son utilizados para restaurar la base de datos a
determinado punto del tiempo, usualmente, la ltima operacin fue ejecutada.

A continuacin, se muestran dos ejemplos de transaction log database restore:

--1er Paso Restaurar BK Full en modo No Recovery


RESTORE DATABASE AdventureWorks2008R2
FROM DISK='C:\BKFull\AdventureWorks2008R2.bak' WITH NORECOVERY
GO
--2do Paso Restaurar BK Differential en modo No Recovery

RESTORE DATABASE AdventureWorks2008R2


FROM DISK='C:\BKDiff\AdventureWorks2008R2.bak' WITH NORECOVERY
GO
--3er Paso Restaurar BK Transaction Log en modo Recovery
RESTORE LOG AdventureWorks2008R2
FROM DISK='C:\BKLog\AdventureWorks2008R2.trn' WITH RECOVERY

Para varios Transaction Log

--1er Paso Restaurar BK Full en modo No Recovery


RESTORE DATABASE AdventureWorks2008R2
FROM DISK='C:\BKFull\AdventureWorks2008R2.bak' WITH NORECOVERY
GO
--2do Paso Restaurar BK Transaction Log en modo No Recovery
RESTORE LOG AdventureWorks2008R2
FROM DISK='C:\BKLog\AWLOG1.trn' WITH RECOVERY
GO
--3er Paso Restaurar BK Transaction Log en modo Recovery
RESTORE LOG AdventureWorks2008R2
FROM DISK='C:\BKLog\AWLOG2.trn' WITH RECOVERY

Recovey Models
El Recovery Models es importante para poder determinar el tipo de backup que puede
ser realizado en cada base de datos.

Los recovery models disponibles en SQL Server 2008R2 son los siguientes:

Simple

Full

Bulk-Logged

Cuando una base de datos se encuentra configurada con el recovery model en Full, todos los
cambios realizados (DML, DDL), son grabados en el transaction log.. Es por ello, que bajo esta
configuracin es posible recuperar una base de datos hasta algn especfico punto del tiempo.
Minimizando o eliminando la prdida de informacin en caso de desastre. La informacin se
mantendr en el transaction log, de manera indefinida y slo ser removida cuando se ejecute un
transaction log backup.
Por otro lado, existen ciertas operaciones que han sido diseadas para manipular grandes
cantidades de data. Sin embargo, la carga de grabar todas las transacciones en el transaction log
pueden afectar a la performance. El recovery model Bulk-logged permite que ciertas
operaciones sean ejecutadas con un mnimo de logueo, es decir, reduce el impacto, en
performance.
Las operaciones que pueden ser realizadas con el mnimo logueo son:

BCP

BULK INSERT

SELECT ... INTO

CREATE INDEX

ALTER INDEX ... REBUILD

Finalmente, el Simple recovery model graba las operaciones en el transaction log, exactamente
de la misma forma que el full recovery model; sin embargo, cada vez que se realiza un commit el
transaction log ste es liberado.
El siguiente comando permite configurar el recovery model de una base de datos

ALTER DATABASE AdventureWorks2008R2


SET RECOVERY {FULL|BULK_LOGGED|SIMPLE}
Saludos.