BACKUPS, RESTORES Y DATAFILES (RESTAURACION PARCIAL)
El distribuir una base de datos en varios datafiles y a la vez estos en varios archivos, puede tener gran importancia en el rendimiento de la base de datos. Situar tablas de gran tamaño en un solo archivo e incluso en un solo datafile con varios archivos puede incrementar muchísimo el rendimiento de la bd. Es te rendimiento siempre es más pronunciado si se trabaja con raid´s de discos. Si mantenemos una fragmentación baja de sistema de archivos estas tablas están en unos sectores continuos en el disco físico por lo cual optimizamos mas las lecturas. El utilizar varios datafiles también nos ayudan a equilibrar cargas de trabajo, p.ej si hay diferentes procesos que trabajan con tablas bien diferenciadas dicha tablas pueden estar en dtos datafiles y estos en distintos discos, dtos raids, dtos canales de la controladora e incluso en dtas controladoras. De esta manera aunque el trabajo se realice en el mismo servidor quedan casi aislados los procesos ya que normalmente el cuello de botellas suele ser el disco.
Después de este pequeño resumen de porque utilizar datafiles para mejorar el rendimiento también es importante en cuestiones de backup y restores de la bd. Pongamos la situación de un borrado de una tabla o parte de su contenido en una bd de varios cientos de Gb, la recuperación de dichos datos nos obligaría a restaurar toda la bd en otro servidor y restaurar el log hasta dicho momento. Es sabido que siempre deberíamos tener un servidor en el que se realizaran pruebas de restore de los backups de la bd, aun teniendo dicho servidor este puede tener restaurado ya un backup posterior y tenemos que romper todo el circuito de comprobaciones de backupo o backup de reserva.
Otra opción es localizar el datafile donde se encuentra dicha tabla y restaurar solamente este por lo que la necesidad de un equipo de grandes dimensiones no es necesario. A continuación vamos a ver las sql necesarias para realizar dicho proceso, teniendo en cuenta que el equipo destino no tendrá ni el más minimo parecido con el equipo origen y de lo que se trata es de recuperar los datos de una tabla.
Restauramos solamente el datafile que contiene la tabla desde un backup completo de la bd y en otra ruta.
RESTORE DATABASE NOMBREBASEDATOS
FILEGROUP = 'Data Filegroup 8' --recuperamos el data file 8
FROM DISK = 'v:\backup.bak' --desde la
unidad de disco
WITH NORECOVERY,PARTIAL, --el parametro norecovery por si tenemos que restaurar log
posteriores
MOVE 'DAT_8_Data' TO 'c:\ DAT_8.ndf' --cambiamos
la ruta del archive dat_8.ndf, nombre logico DAT_8_Data
RESTORE LOG NOMBREBASEDATOS --restauramos
un backup del log completo y dejamos la bd preparamada para + restauraciones
FROM DISK
= 'v:\backup_log_1'
WITH NORECOVERY
RESTORE LOG MyNwind --restauramos
hasta el momento que deseemos.
FROM DISK
= 'v:\backup_log_2'
WITH RECOVERY, STOPAT = 'Apr 15, 1998 12:00 AM'
Ya disponemos de una bd con unos datos minimos con la que podemos operar como deseemos. Copiamos los datos que deseemos al servidor de trabajo…