Realizar backups periódicos de la Base de Datos es obligatorio porque es lo único que tenemos para recuperar los datos de los usuarios en caso de que ocurra un desastre (robo del Servidor, incendio, inundación, disco duro dañado, Base de Datos corrupta, etc).

En Firebird son 4 los métodos que podemos utilizar, la elección del más adecuado dependerá de las circunstancias.

  1. GBAK.
  2. NBACKUP
  3. BEGIN BACKUP … END BACKUP
  4. Detención del Servidor

En Firebird no se debe copiar el archivo de la Base de Datos directamente porque si está siendo usada puede ser corrompida y por lo tanto quedar inutilizable. Inclusive, aunque creas que nadie la está usando eso puede ser falso porque el propio Servidor del Firebird la está usando, por ejemplo si está haciendo un sweep.

O sea que abrir el Explorador del Windows y copiar la Base de Datos a otra carpeta, a un pen-drive, CD, DVD, etc. jamás debería hacerse salvo que se hayan tomado las debidas precauciones (los métodos 3. y 4. son justamente sobre esas precauciones)

Veamos ahora con más detalle cada uno de los métodos que podemos utilizar y sus respectivas ventajas y desventajas.

GBAK realiza una copia completa de la Base de Datos y el archivo resultante es de menor tamaño que el original pero no puede ser utilizado directamente sino que debe ser restaurado para poder ser usado.

Ventajas

  • Al finalizar, se tiene una copia completa de la Base de Datos
  • Los usuarios pueden continuar trabajando mientras se realiza el backup
  • El tamaño del backup es menor que el tamaño de la Base de Datos original
  • Al restaurar, se regeneran los índices
  • Al restaurar, se puede cambiar el tamaño de la página
  • Se puede ver lo que está haciendo el programa GBAK

Desventajas

  • La copia requiere ser restaurada con GBAK para poder ser usada, es imposible usarla si no se la restaura
  • En bases de datos muy grandes realizar el backup puede tomar mucho tiempo
  • Si la Base de Datos es grande, el archivo de backup también lo será
  • En entornos donde no se admite estar sin un backup actualizado si la Base de Datos es grande, se usará mucho espacio del disco duro. Como además demorará mucho en concluir habrá un período de tiempo (desde que empezó el backup hasta que terminó) en que no se contará con una copia de seguridad. Por lo tanto, podría ser inadmisible usar GBAK.

NBACKUP permite realizar backups incrementales, es decir que con este programa se pueden copiar solamente los datos nuevos, los que se introdujeron desde la copia anterior.

Ventajas

  • Los usuarios pueden continuar trabajando mientras se realiza el backup
  • Puede realizar una copia total de la Base de Datos o copias incrementales
  • Si se realizan copias incrementales el backup termina muy rápido porque solamente son copiados los nuevos datos, los que se agregaron desde la anterior ejecución de NBACKUP
  • La restauración puede realizarse aunque el Servidor del Firebird no esté corriendo
  • Se puede ver lo que está haciendo NBACKUP

Desventajas

  • La copia requiere ser restaurada con NBACKUP para poder ser usada, es imposible usarla si no se la restaura
  • No se puede usar en Bases de Datos que están partidas en varios archivos
  • Si se pierde o se daña una de las copias incrementales todo el backup se queda inutilizable
  • Si la Base de Datos original tiene errores, esos mismos errores se trasladan en la copia

BEGIN BACKUP … END BACKUP son cláusulas de ALTER DATABASE y a pesar de lo que el nombre sugiere no inician ni terminan el backup sino que ponen las condiciones para que éste se realice. Al escribir BEGIN BACKUP se pone una marca en la Base de Datos que indica que desde ese momento todas las inserciones, actualizaciones y borrados se harán en un archivo temporal (llamado delta). De esta manera se puede con toda seguridad copiar el archivo de la Base de Datos (el que normalmente tiene la extensión .FDB) a otra carpeta del disco duro, a un pen-drive, CD, DVD, etc., sin riesgo de que se corrompa. Al finalizar la copia se debe escribir END BACKUP para que el contenido del archivo temporal (delta) sea escrito en la Base de Datos y todo vuelva a la normalidad.

Ventajas

  • Los usuarios pueden continuar trabajando mientras se realiza la copia
  • Se realiza una copia total de la Base de Datos
  • Puede comprimirse la Base de Datos con programas como WinZip, WinRar, 7Zip, etc.
  • Copiar archivos de una ubicación a otra es algo que la mayoría de los usuarios pueden hacer, así que si la aplicación no lo hace automáticamente los usuarios podrían hacerlo

Desventajas

  • No es aconsejable en entornos donde hay muchos usuarios conectados trabajando 24/7 porque el tamaño del archivo temporal (delta) será considerable y su restauración hará que las operaciones que realicen los usuarios (inserción, actualización, borrado) se vuelvan lentas.
  • Si la Base de Datos original tiene errores, esos mismos errores se trasladan en la copia

La Detención del Servidor es una medida extrema que solamente debería considerarse cuando por algún motivo las demás alternativas no son posibles o deseables. Si se detiene el Servidor nadie puede conectarse a la Base de Datos y cualquiera que hubiera estado conectado en ese momento es automáticamente desconectado.

Ventajas

  • Se puede con toda seguridad copiar la Base de Datos usando el Explorador del Windows, o programas como WinZip, WinRar, 7Zip, etc.

Desventajas

  • Todos los usuarios deben estar desconectados
  • Durante el tiempo que dura la copia nadie puede usar la Base de Datos
  • Si la Base de Datos original tiene errores, esos mismos errores se trasladan en la copia
  • Si te olvidas de reiniciar el Servidor (o si demoras mucho en hacerlo) estás perjudicando a los usuarios porque no podrán ni insertar ni actualizar ni borrar ni consultar datos

Advertencia:

La única forma existente de que se puede confiar en el backup es restaurándolo enseguida. Un archivo de backup es un archivo como cualquier otro, no tiene algo especial que lo haga invulnerable a corrupción o a daños. Y si está dañado está causando dos problemas: por un lado ocupa espacio inútilmente en el disco duro pero lo más grave es que te da una sensación de seguridad porque crees que tienes un backup funcional pero eso es falso. Por lo tanto:

  • Paso 1. Realizar el backup (usando alguno de los 4 métodos anteriormente descritos)
  • Paso 2. Restaurarlo para verificar su correcto funcionamiento
  • Paso 3. Guardarlo en un lugar seguro

Una metodología de backup

Esto es solamente un consejo para que tengas una idea de lo que puedes hacer, en tu caso alguna otra metodología podría ser preferible, pero aquí puedes leer una que da buenos resultados:

  1. Los backups siempre deben hacerse al menos por duplicado. Una copia debe quedar cerca del Servidor para que si hay algún problema pueda ser rápidamente utilizada y la otra copia lejos del Servidor, en otro edificio y quizás en otra localidad para que si ocurre un problema muy grave como incendio, robo, inundación, terrorismo, etc. se pueda restaurar la Base de Datos
  2. Las copias de backup deben ser realizadas y mantenidas solamente por usuarios autorizados, los datos que manejan la mayoría de las empresas son privados y sus propietarios o gerentes no quieren que estén recorriendo de mano en mano
  3. Las copias de backup deben ser guardadas en algún cajón bajo llave, no deben estar al alcance de cualquiera
  4. Una vez al mes (el primer día laboral, por ejemplo) se hace un backup total. Los demás días se hace un backup incremental (usando para ello el programa NBACKUP)
  5. Las copias totales (que se realizan una vez al mes) se guardan al menos por 12 meses. Las copias incrementales (que se realizan diariamente) se guardan al menos por 3 meses

Artículos relacionados

El índice del blog Firebird21