Si ya tienes una Base de Datos creada con una versión anterior del Firebird y deseas utilizarla con Firebird 3 deberás hacer un ciclo backup/restore pero en bases de datos muy grandes ese ciclo puede demorar mucho tiempo, varias horas inclusive.

Y lo peor … después de muchos minutos o de muchas horas de haberse iniciado el ciclo te muestra un mensaje de error, de que la Base de Datos no puede ser restaurada porque encontró algún problema.

¿Por qué?

Porque el Firebird no verifica los metadatos durante las operaciones normales que realizan los usuarios (INSERT, UPDATE, DELETE, SELECT), sino cuando hace un restore con el programa GBAK.EXE o una verificación con el programa GFIX.EXE

¿Qué son los metadatos?

Son los datos usados internamente por el Firebird. Eso incluye a los dominios, las estructuras de las tablas, los índices, los stored procedures, los triggers, etc.

Todos ellos se encuentran dentro de la Base de Datos y fueron colocados allí por el propio Firebird para su manejo interno o por nosotros cuando diseñamos esa Base de Datos.

Los metadatos, así como cualquier dato introducido por los usuarios, pueden dañarse. Eso es muy raro que ocurra, pero no es imposible, ningún archivo de computadora es inmune a la corrupción.

¿Cómo podemos verificar rápidamente que los metadatos estén ok?

Haciendo un ciclo backup/restore pero usando la opción -meta_data

Cuando usamos la opción -meta_data solamente los metadatos son copiados y restaurados, los datos introducidos por los usuarios son ignorados. Con esto por supuesto se consigue que el proceso sea rapidísimo porque los metadatos ocupan una porción ínfima de la Base de Datos en bases de datos muy grandes.

Por ejemplo, podríamos tener una Base de Datos cuyo tamaño es de 20 Gb pero sus metadatos ocupan solamente 20 Mb, es decir 1000 veces menos. Eso implica que el ciclo backup/restore será 1000 veces más rápido.

Haciendo un ciclo backup/restore de los metadatos

GBAK -backup -verbose -meta_data -user SYSDBA -password masterkey MiBaseDatos.FDB MiBackup.FBK

GBAK -create -verbose -meta_data -user SYSDBA -password masterkey MiBackup.FBK MiNuevaBaseDatos.FDB

Si hay algún problema con los metadatos entonces con los dos comandos anteriores “saltará” el error. El programa GBAK nos dirá cual fue el error (o los errores) que encontró y nos dedicaremos a solucionar eso antes de hacer el ciclo backup/restore definitivo.

La ganancia de tiempo puede ser impresionante. Un ciclo backup/restore solamente de los metadatos típicamente no durará más que 2 ó 3 minutos, mientras que un ciclo backup/restore completo puede durar varias horas.

Entonces, lo más inteligente es hacer primero un ciclo backup/restore de solamente los metadatos y en el caso de que todo esté bien hacer el ciclo backup/restore completo. Por supuesto que si al hacer el ciclo backup/restore de los metadatos se encontró algún error (o algunos errores) hay que corregir eso antes de hacer el ciclo backup/restore completo.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21