4D Backup, VSS snapshots y los nuevos comandos para bloquear el almacén de datos

4D le ofrece múltiples formas integradas de hacer copias de seguridad de sus datos: el backup 4D y el uso de un servidor espejo. Con 4D v20, 4D expone comandos internos para bloquear el datastore, permitiéndole copiar sus datos mientras 4D está en ejecución.
Primero, hablemos de los diferentes medios para hacer backup de sus datos con 4D.

Copia de seguridad y restauración automática

La copia de seguridad integrada no sólo hace una copia completa automática de su archivo de datos, sino que también gestiona un registro de transacciones que contiene todas las operaciones efectuadas en sus datos. Esta es la mejor protección para su trabajo. Si algo ocurre, como un corte de energía, un disco duro dañado o un fallo del sistema, en el siguiente arranque 4D detectará automáticamente el fallo y, si es necesario, integrará las operaciones perdidas en el registro o lanzará una restauración completa con integración del registro. Por eso recomendamos 4D Backup para la mayoría de los casos de uso.

Consulte para más detalles https://developer.4d.com/docs/Backup/overview.

SERVIDOR Espejo

Para instalaciones 24/7 donde no puede bloquear el archivo de datos para una copia de seguridad completa o donde desea un tiempo de restauración mínimo, debe utilizar es un servidor espejo. 4D replicará automáticamente todos los cambios en el servidor espejo, de modo que si su servidor principal falla su servidor espejo pueda estar activo en cuestión de segundos.

Establecer una configuración espejo requiere más trabajo y es más complicado que utilizar la copia de seguridad. Hemos ayudado a muchos de nuestros clientes a implementar esta configuración, así que no dude en contactar al equipo de Servicios profesionales de 4D para obtener ayuda y asesoramiento.

Shadow Copy del Volume Windows

Especialmente en los entornos virtuales, los administradores de sistemas prefieren utilizar snapshots basados en Volume Shadow Copy (VSS). 4D soporta esto con su propio 4D VSS Writer. Consulte https://blog.4d.com/enterprise-virtua l-machine-snapshot-support/ para más detalles.

Tenga cuidado ya que esto no reemplaza 4D Backup ya que un snapshot sólo contiene los datos de un momento dado. Todas las operaciones que ocurren después de la instantánea no pueden ser recuperadas ya que no se dispone del diario ni del registro de transacciones.

Explicación visual del funcionamiento de 4D Backup

¿Cómo funcionan el backup y el VSS?

Dejaré de lado el backup espejo ya que es una forma muy diferente de guardar sus datos y me concentraré en el funcionamiento de 4D Backup y 4D VSS.

El primer punto a tener en cuenta es que 4D no aplica inmediatamente cada cambio en el archivo de datos en tiempo real. Hacer esto pediría demasiados accesos al disco, afectando significativamente al rendimiento de su aplicación. 4D utiliza una caché en memoria, donde todos los cambios se aplican primero, y regularmente 4D vacía la caché, aplicando todos los cambios en el archivo de datos de una sola vez. Así, cuando se inicia la copia de seguridad o cuando se llama a VSS, 4D vacía primero la caché para que el archivo de datos contenga datos actualizados.

Otro punto importante a tener en cuenta es que copiar un archivo de datos mientras está en uso no funciona: si el archivo de datos se modifica mientras se copia, el archivo de datos resultante puede estar dañado o puede haber diferencias entre el archivo de datos y el diario o los índices. Así que el segundo paso es bloquear el archivo de datos impidiendo las operaciones de escritura durante la copia. Las operaciones de lectura siguen siendo compatibles, pero todo proceso que intente realizar una operación de escritura será bloqueado hasta que finalice el backup/snapshot VSS.

Por último, permítame hablarle del diario. El diario contiene todas las operaciones realizadas desde la última copia de seguridad. Se utiliza en dos casos principales: si su archivo de datos se corrompe o si quiere revertir algunas operaciones desafortunadas del usuario. Es un archivo muy importante si no quiere perder ni una sola modificación de su archivo de datos.

Por lo tanto, una vez que se vacía la caché y se bloquea el archivo de datos, el backup 4D (pero no VSS) crea un nuevo archivo de diario. Entonces el archivo de datos, el archivo de índice y el diario pueden ser copiados, antes de desbloquear los datos.

Como puede ver, toda la operación es bastante compleja. Por eso recomendamos especialmente a nuestros clientes que utilicen la copia de seguridad 4D, ya que es totalmente automatizada y segura. Aún así, algunos de ustedes construyen su propio mecanismo de snapshot. Para ellos, hemos traído la capacidad de bloquear el datastore mientras 4D se está ejecutando.

Nueva funcionalidad: Bloqueo del datastore

Le ofrecemos 3 nuevos comandos: ds.flushAndLock(), ds.locked() y ds.unlock().

ds.flushAndLock() vacía la caché y bloquea el datastore para los demás procesos. Mientras que el datastore esté bloqueado, todas las operaciones de escritura procedentes de otros procesos se pondrán en espera hasta que se desbloquee. Así que a partir de ese momento, sabe que ni su archivo de datos, ni su archivo de índice, ni su diario serán alterados, permitiéndote copiarlos libremente y estar seguro de que están sincronizados y no corruptos.

Una vez que haya terminado su copia, puede llamar a ds.unlock() en el mismo proceso. Esto liberará el bloqueo en el almacén de datos, permitiendo que las operaciones de escritura se realicen de nuevo.

El comando ds.locked() le indicará si un proceso ha bloqueado actualmente el datastore.

Con estos 3 comandos, ahora puede reproducir la forma en que 4D backup y VSS bloquean el datastore antes de copiarlo.

Código realizando un archivo de la carpeta de datos

Para ilustrar esta nueva funcionalidad, permítame darle un fragmento de código. Este código realiza un archivo de la carpeta de datos (y como tal de los archivos de datos e índice) y del diario:

$destination:=Folder(fk documents folder).folder("Archive")
$destination.create() // The folder where we will copy the archive
ds.flushAndLock() // We first lock the datastore, blocking write operations from other processes

$dataFolder:=Folder(fk data folder)
$dataFolder.copyTo($destination) // We can now copy the data folder

$oldJournalPath:=New log file() // We create a new journal
$oldJournal:=File($oldJournalPath; fk platform path)
$oldJournal.moveTo($destination) // We move the old journal

ds.unlock() // Our copy is over, we can now unlock the datastore

Como puede ver, aunque el código es bastante pequeño, hay que dar muchos pasos importantes para asegurarse de que el archivo no se corrompe: el código se encarga de vaciar la caché y bloquear el datastore, de crear un nuevo diario y guardar el antiguo y, por supuesto, de desbloquear el almacén de datos al final de la operación. Lo animo a que utilice este trozo de código como base para sus propios mecanismos de snapshot para que no olvide un paso importante.

Esto es todo por ahora. Espero que esta entrada del blog le ayude a entender mejor el funcionamiento interno de 4D Backup.
Y por supuesto, si tiene preguntas o comentarios, no dude en llevarlos al foro.

Nicolas Brachfogel
• Propietario de producto y Desarrollador Senior - Nicolas Brachfogel se unió a 4D en 2017 como Senior Developer (4D Server y networking). Como Product Owner para gestionar el lanzamiento de Apple Silicon, está a cargo de escribir historias de usuario y traducirlas en especificaciones funcionales, así como asegurarse de que las implementaciones de las funcionalidades satisfagan las necesidades del cliente. Diplomado por el Instituto Superior de Informática Aplicada (INSIA), Nicolas comenzó su carrera como desarrollador de software en 2001. Tras varios años codificando en Java y C++, pasó a especializarse en el desarrollo cliente-servidor para empresas de videojuegos. Como desarrollador/arquitecto de servidores, trabajó con éxito en las arquitecturas de servidores de muchos juegos (Dofus Arena, Drakerz, Trivial Pursuit Go!).