You are on page 1of 34

Copias de seguridad de base de datos

CARLOS LLANOS MONTES


carlosllanos@hotmail.cl

El registro de transacciones (SQL Server


Todas las bases de datos de SQL Server tienen un registro de transacciones que registra todas las transacciones y las modificaciones que cada transaccin realiza en la base de datos. El registro de transacciones se debe truncar peridicamente para evitar que se llene. Sin embargo, algunos factores pueden retrasar el truncamiento del registro, por lo que es importante supervisar el tamao del registro. Algunas operaciones se pueden registrar mnimamente para reducir su impacto sobre el tamao del registro de transacciones. El registro de transacciones es un componente esencial de la base de datos y, si se produce un error del sistema, podra ser necesario para volver a poner la base de datos en un estado coherente. El registro de transacciones nunca se debe eliminar o mover, a menos que se conozcan totalmente las implicaciones de esas acciones.

El registro de transacciones permite las siguientes operaciones: Recuperacin de transacciones individuales. Recuperacin de todas las transacciones incompletas cuando se inicia SQL Server. Puesta al da de una base de datos, un archivo, un grupo de archivos o una pgina restaurados hasta el momento exacto del error. Permitir replicacin transaccional. Compatibilidad con soluciones de alta disponibilidad y recuperacin ante desastres: Grupos de disponibilidad AlwaysOn, creacin de reflejo de base de datos y trasvase de registros.

Qu es el Transaction Log? Por cada bbdd (archivo .mdf) se crea un archivo de log (archivo .ldf) en el que se almacenan todos los cambios que se producen en la bbdd. En l se van guardando cambios que luego permitirn volver atrs (rollback) en una transaccin o incluso hacer una recuperacin a un estado anterior.

Por qu puede ocupar mucho ms que la propia bbdd? Cuando se ejecutan muchas consultas y/o afectan a un gran nmero de registros, produciendo cambios en la bbdd. Todos los cambios se van almacenando en el transaction log, si adems no tenemos un plan de mantenimiento que reduzca este log de forma peridica el .ldf se ir llenando hasta ocupar una gran cantidad de espacio y terminar por llenar el disco.

Cmo se reduce el log de transacciones?


Existen varias maneras, la forma ms recomendable es utilizando un plan de mantenimiento que realice una copia de seguridad del registro de transacciones.

Backup log: Guardamos un backup y luego reducimos el log de la bbdd basecar a 10 Mb

USE [basecar] Utilizamos la bbdd basecar CHECKPOINT Para que todas las pginas de memoria se escriban en la bd GO

EXEC sp_addumpdevice disk ,CopiaMiBase_basecar ,c:\LogMiBase_basecar.bak Creamos un punto donde guardaremos el log y procedemos a hacer el backup con truncado del log BACKUP DATABASE basecar TO CopiaMiBase_basecar BACKUP LOG pruebamm WITH TRUNCATE_ONLY DBCC SHRINKFILE (basecar_log, 10) - Dejamos el archivo de log con un tamao de 10 Mb

Reducir sin hacer backup:

USE [basecar] Utilizamos la bbdd basecar CHECKPOINT Para que todas las pginas de memoria se escriban en la bd GO BACKUP LOG basecar WITH TRUNCATE_ONLY Truncamos el registro DBCC SHRINKFILE (basecar _Log, 10) Lo reducimos a 10 Mb

Tipos de mtodos de copia de seguridad


Copia de seguridad completa de la base de datos Copia de seguridad diferencial Copia de seguridad del registro de transacciones Copia de seguridad de un archivo o grupo de archivos de una base de datos Uso del Administrador corporativo de SQL Server para hacer copias de seguridad

Copia de seguridad completa de la base de datos

Proporciona una lnea de base Hace copia de seguridad de los archivos, objetos y datos originales Hace copia de seguridad de partes del USE master de transacciones EXEC registro sp_addumpdevice 'disk', 'NwindBac',
C:\MyBackupDir\NwindBac.bak' BACKUP DATABASE Northwind TO NwindBac
Northwind Log Copia de seguridad D:\ NwindBac

Datos

Copia de seguridad diferencial


Se usa en bases de datos que se modifican frecuentemente Requiere una copia de seguridad completa de la base de datos Hace copia de seguridad de los cambios de la base de datos desde la ltima copia de seguridad completa Disminuye el tiempo tanto en el proceso de copia de seguridad como en la BACKUP DATABASE Northwind TO restauracin
DISK = 'D:\MyData\MyDiffBackup.bak' WITH DIFFERENTIAL

Copia de seguridad del registro de transacciones


Requiere una copia de seguridad completa de la base de datos Copia todos los cambios de la base de datos desde la ltima instruccin BACKUP LOG hasta el final del registro de transaccines actual Trunca el registro de transacciones
USE master EXEC sp_addumpdevice 'disk', NwindBacLog', 'D:\Backup\NwindBacLog.bak' BACKUP LOG Northwind TO NwindBacLog

Uso de la opcin NO_TRUNCATE


SQL Server Guarda todo el registro de transacciones incluso si no se puede tener acceso a la base de datos No purga las transacciones confirmadas del registro de transacciones

Permite recuperar los datos hasta el momento en que se produjo el error del sistema

Limpieza del registro de transacciones


Utilizar la instruccin BACKUP para borrar el registro de transacciones Uso de la opcin TRUNCATE_ONLY o NO_LOG
No se pueden recuperar los cambios No se registra

Establecimiento de la opcin trunc. log on chkpt.


Escribe todas las transacciones confirmadas Ocurre automticamente cuando se establece a true

Copia de seguridad de un archivo o grupo de archivos de una base de datos


Usada en bases de datos de gran tamao Hace copia de seguridad individualesde los archivos de base de datos Asegura que se hace copia de seguridad de todos los archivos del grupo de archivos de la base de datos Hace copia de seguridad de los registros de BACKUP DATABASE PhoneOrders transacciones
FILE = Orders2 TO OrderBackup2 BACKUP LOG PhoneOrders to OrderBackupLog

Restricciones de la copia de seguridad de archivos o grupos de archivos de una base de datos


Escenario 1
Table Index

D:\

Grupo 1

Debe hacer copia de seguridad de ambos archivos como una unidad

Escenario 2
Table

D:\

Grupo 1
Index 1 Index 2

Grupo 2

Grupo 3

Debe hacer copia de seguridad de los Grupos 1, 2, y 3 como una unidad

Realizar copias de seguridad

El siguiente ejemplo muestra cmo se consigue una copia de seguridad de la base de datos basedatoscar en forma complete en el disco

Use basedatoscar Go BACKUP DATABASE basedatoscar TO DISK = 'D:\backupbasedatoscar.Bak' WITH FORMAT;

El siguiente ejemplo muestra cmo se logra una copia de seguridad de la base de datos basedatoscar en forma diferencial en el disco

Use basedatoscar Go BACKUP DATABASE basedatoscar TO DISK = 'D:\backupbasedatoscar.Bak' WITH DIFFERENTIAL; go

Restauracin de base de datos

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.

Restaura copias de seguridad realizadas con el comando BACKUP.

Este comando le permite realizar los siguientes escenarios de restauracin: Restaurar una base de datos completa a partir de una copia de seguridad completa de la base de datos (restauracin completa). Restaurar parte de una base de datos (restauracin parcial). Restaurar archivos o grupos de archivos en una base de datos. Restaurar pginas especficas en una base de datos (restauracin de pginas). Restaurar un registro de transacciones en una base de datos (restauracin del registro de transacciones). Revertir una base de datos al punto temporal capturado por una instantnea de la base de datos.

La sintaxis para restaurar una base de datos desde una copia de seguridad completa
RESTORE DATABASE { nombre_base_datos | @var_nombre_base_datos } [ FROM <backup_device> [ ,...n ] ] [ WITH { [ RECOVERY | NORECOVERY | STANDBY = {standby_file_name | @standby_file_name_var } ] La sintaxis para restaurar archivos especficos o Filegroups de la base de datos

RESTORE DATABASE { nombre_base_datos | @var_nombre_base_datos } <file_or_filegroup> [ ,...n ] [ FROM < dispositivo_backup > [ ,...n ] ] WITH { [ RECOVERY | NORECOVERY ] [ , <general_WITH_options> [ ,...n ] ] } [ ,...n ] [;]

El siguiente ejemplo se restaura una copia de seguridad completa de la base de datos desde un dispositivo lgico de copia de seguridad de la base de dato

RESTORE DATABASE basedatoscar FROM basedatoscar Go

Mover una base de datos entre servidores

Cmo mover bases de datos entre equipos que estn ejecutando SQL Server

Es bastante comn tener que mover bases de datos entre servidores ya sea por traspasos de entornos de desarrollo a produccin o por tener informacin para detectar errores en las aplicaciones, hacer pruebas de carga etc. Para realizar el movimiento entre servidores pueden seguirse varias alternativas, intentaremos desarrollar algunas y exponer cuales son los mecanismos. Incluiremos tambin parte de un artculo que ya est publicado en portalsql.com sobre los logins ya que son uno de los temas que suelen dar problemillas al migrar las bases de datos.

DTS. Data Transformation Services. Los DTS y el asistente que proporciona SQL-SERVER son una estupenda herramienta para mover datos entre servidores, son adecuados cuando los servidores tienen una conexin fsica entre ellos y por tanto pueden verse. En principio puede migrarse con este mecanismo cualquier base de datos que tenga un controlador ODBC a nuestro SQL, aunque como todo siempre hay alguna pequea particularidad que hay que tener en cuenta.

Veamos como se usan. En el men del directorio de SQLServer, aparece una aplicacin que se llama Asistente para importacin y exportacin de base de datos que se basa en DTS y que con un sencillo asistente basado en pasos, permite configurar esta informacin.

Backup / Restore.
Otro mecanismo interesante para mover los datos es utilizar backup-restore, es decir, crear una copia de seguridad y restaurar esa copia en el servidor de destino. Esta opcin es bastante til cuando no se pueden conectar los servidores de origen y destino. Bsicamente con las instrucciones siguientes sera suficiente.

Servidores vinculados.
Los linked servers, son una opcin Tambin si se est fsicamente conectados, adems hay que tener en cuenta los permisos necesarios para que un servidor acceda al otro y configurar todas estas opciones. No comentamos ms acerca de esta opcin, porque sale un poco del objeto del presente documento, pero es una opcin que entendemos que puede resultar interesante en ciertos casos y que aunque solamente sea a modo de mencin debe figurar.

Vinculacin / Desvinculacin.
El mecanismo para usar este procedimiento es parecido al de Backup/restore. Sin embargo este mtodo obliga a que no haya ningn usuario conectado a la base de datos de origen en el momento de ejecutarlo. Por otra parte, Tambin es el mecanismo ms peligroso de movimiento ya que de alguna manera se desvincular la base de datos del servidor y por tanto, es un proceso que permite que un error suponga incluso perder los datos.

Resumen
El propsito de crear copias de seguridad de SQL Server es para que usted pueda recuperar una base de datos daada. Sin embargo, copias de seguridad y restauracin de los datos deben ser personalizados para un ambiente particular y debe trabajar con los recursos disponibles. Por lo tanto, un uso fiable de copia de seguridad y restauracin para la recuperacin exige una copia de seguridad y restauracin de la estrategia. La mejor opcin de modelo de recuperacin de la base de datos depende de los requerimientos de su negocio. Para evitar la gestin del registro de transacciones y simplificar el BACKUP y restauracin, utilice el modelo de recuperacin simple. Para minimizar la prdida de trabajo, a costa de los gastos generales de administracin, utilice el modelo de recuperacin completa. El alcance de una copia de seguridad de los datos puede ser una base de datos completa, una base de datos parciales, o un conjunto de archivos o grupos de archivos. Para cada uno de estos, SQL Server admite copias de seguridad completas y diferenciales

Bajo el modelo de recuperacin optimizado para cargas masivas de registros de modelo de recuperacin, copias de seguridad del registro de transacciones (o copias de seguridad de registro) son obligatorias. Cada copia de seguridad de registro cubre la parte del registro de transacciones que estaba activa cuando la copia de seguridad fue creada, e incluye todos los registros que no fueron respaldados en una copia de seguridad de registros anterior. BACK UP TRANSACT-SQL realiza copias de seguridad de una base de datos completa, o uno o ms archivos o grupos de archivos (BASE DE DATOS DE SEGURIDAD). Adems, bajo el modelo de recuperacin optimizado para cargas masivas de registros de modelo de recuperacin, copias de seguridad del registro de transacciones (BACKUP LOG). Un escenario de restauracin es un proceso que restaura los datos de una o ms copias de seguridad y se recupera la base de datos cuando la ltima copia de seguridad se restaura

You might also like