Cómo implementar copias de seguridad con el volcado en línea de InterBase XE7
Dmitry Kuzmenko, 08-SEP-2016
InterBase desde la versión 2007 soporta volcado en línea - copia del archivo de base de datos en línea. En lugar de gbak -b/-c, esto le permite obtener una base de datos lista para usar después de la copia, y no necesita “restaurarla” desde una copia de seguridad (algo que no es una base de datos). El volcado en línea es muy rápido, casi como la copia de archivos por el sistema operativo.
Use el siguiente comando para hacer un volcado en línea de la base de datos
gbak -d [opciones] base_de_datos destino
(Puede encontrar la descripción completa del volcado en la documentación, Doc\OpGuide.pdf, o aquí)
Al igual que para el archivo de base de datos, el destino puede tener cualquier nombre y extensión que desee. El resultado del comando será un archivo de volcado equivalente a la base de datos original, pero en modo de solo lectura.
El tiempo de la primera ejecución de este comando es el tiempo de escaneo (lectura) de la base de datos fuente y el tiempo de escritura del archivo destino.
Hasta que el destino esté en modo de solo lectura, está vinculado al archivo de base de datos. En el primer volcado, se leerá y copiará todo el archivo de base de datos al destino. En el segundo y siguientes - solo se escribirán las páginas modificadas en el destino. Esto se llama “volcado incremental”.
¡Importante! InterBase XE7 en cada comando de volcado repetido (con los mismos nombres de archivo, por supuesto) lee solo las páginas modificadas de la base de datos y las escribe en el destino. Otras versiones anteriores a XE7 leen toda la base de datos fuente. Por lo tanto, el rendimiento es diferente, y XE7 es mucho más rápido. Si no se modificaron páginas en la base de datos fuente, el volcado incremental de XE7 tomará ~1 segundo, mientras que InterBase2007-XE3 gastará el tiempo necesario para leer todo el archivo de base de datos. El tiempo depende del tamaño de la base de datos fuente y la velocidad de almacenamiento. Por ejemplo, si la velocidad de almacenamiento es de alrededor de 400 MB/seg, entonces una base de datos de 100 GB se escaneará en 250 segundos (4 minutos 10 segundos).
Nota. InterBase XE7 soporta formatos de archivo de base de datos de XE7 (ODS 16), XE/XE3 (ODS 15) y 2009 (ODS 13). La función de escaneo inteligente, mencionada anteriormente, funcionará solo con el formato de base de datos XE7 (ODS 16).
Si necesita cambiar el destino al modo de lectura-escritura (modo normal), use el comando
gfix destino -mode read_write
Pero después de eso, el destino pierde el vínculo con la base de datos, y la ejecución posterior de gbak -d base_de_datos destino ya no es posible porque el destino se considera “otra” base de datos.
Si desea sobrescribir completamente el destino, en lugar del volcado incremental, use la opción -ov
gbak -d -ov base_de_datos destino
Volcado del volcado
El primer volcado del volcado funcionará, pero los incrementos posteriores no. Por ejemplo, primero
gbak -d base_de_datos destino1
aquí obtenemos destino1 como una base de datos completamente volcada en modo de solo lectura
Luego,
gbak -d destino1 destino2
Como puede ver, creamos el volcado del volcado. Y sí, este comando copiará destino1 a destino2. Ambos destinos estarán en modo de solo lectura. Pero si repetimos estos dos comandos nuevamente, los cambios que fueron de la base de datos a destino1 no se copiarán a destino2. Por lo tanto, destino2 permanece en el estado después de la primera copia inicial. Y no hay mensajes de error ni advertencias.
Entonces, si alguna vez desea hacer un volcado del volcado, debe usar solo el volcado completo
gbak -d -ov destino1 destino2
La opción -ov es obligatoria para garantizar que destino2 se escriba (y sobrescriba) con la fuente de destino1.
Esquema de copia de seguridad 1
Ejemplo de volcados en diferentes intervalos de tiempo
gbak -d base_de_datos destino
Se ejecuta, por ejemplo, cada 1 hora. Aquí tenemos la base de datos fuente de producción y la copia de “respaldo” destino, con una hora de retraso.
Además, adicionalmente, cada 24 horas podemos ejecutar
gbak -d base_de_datos destino2
Aquí tenemos la base de datos de producción, la copia destino con 1 hora de retraso, y la copia destino2 con 24 horas de retraso.
Puede hacer cualquier número de volcados desde una sola base de datos.
No hace falta decir que los volcados destino pueden usarse como bases de datos de solo lectura para cualquier propósito - informes, análisis, etc., para tareas que no necesitan mirar la base de datos actual.
Pro: Cada volcado puede programarse de forma independiente.
Contra: Retrasos entre el volcado más nuevo y el más antiguo.
Esquema de copia de seguridad 2
Volcado secuencial a diferentes destinos. En este caso, necesita configurar algún programador (del sistema operativo o personalizado) para ejecutar los siguientes comandos uno por intervalo de tiempo especificado
gbak -d base_de_datos destino1
gbak -d base_de_datos destino2
gbak -d base_de_datos destino3
Si usa un intervalo de 1 hora entre estos comandos, tendrá volcados (copias de seguridad) como este:
destino1 a las 12:00, destino2 a las 13:00, destino3 a las 14:00. La siguiente ejecución del volcado destino1 se actualizará a las 15:00, y así sucesivamente. Como resultado, tendremos copias de las bases de datos de las últimas 3 horas.
Pro: tenemos volcados de varias horas que permanecen cerca de la base de datos original
Contra: es un poco difícil programar estos comandos. Es decir, en este ejemplo, los comandos de volcado deben programarse por hora exacta:
Volcado a destino1 a las 00:00, 03:00, 06:00…
Volcado a destino2 a las 01:00, 04:00, 07:00…
Volcado a destino3 a las 02:00, 05:00, 08:00…
Resumen
Gbak -d puede usarse para un volcado al almacenamiento local y para un volcado a través de la red - ya que el volcado incremental envía al destino solo las páginas modificadas. Por lo tanto, el destino puede colocarse en un almacenamiento de red remoto. Pero, por supuesto, la red debe tener un buen ancho de banda para ser compatible con el almacenamiento local. De lo contrario, las escrituras al destino serán lentas.
El volcado en línea puede usarse no solo como una herramienta para hacer una copia de seguridad en línea de la base de datos, sino también como una herramienta para hacer “escalado horizontal” del sistema, para equilibrar la carga de las aplicaciones de producción, informes y análisis.
Si bien ve que el volcado en línea es la forma más rápida de obtener una copia de base de datos en línea (en lugar de gbak -b/-c), dado que el volcado opera con páginas, puede omitir algunos daños en las páginas si la base de datos está corrupta. Por lo tanto, aún necesita verificar la consistencia de la base de datos con el viejo y bueno gbak -b/-c, pero puede hacerlo con menos frecuencia que antes.