Replicación de una base de datos Firebird en modo síncrono

Vamos a replicar una base de datos Firebird en modo síncrono, lo vamos a hacer en sencillos 4 pasos. Vamos a tomar la base de datos maestra, vamos a crear una réplica, la vamos a configurar como de solo lectura y vamos a hacer que se sincronicen

Introducción

Bienvenidos a mi canal. Hoy vamos a replicar una base de datos Firebird en modo síncrono, lo vamos a hacer en sencillos 4 pasos. Vamos a tomar la base de datos maestra, vamos a crear una réplica, la vamos a configurar como de solo lectura y vamos a hacer que se sincronicen. ¿Listos? ¡Empecemos!


Tarea 1: Crear la réplica inicial

Ok, lo primero que voy a hacer es crear una copia de mi base de datos maestra. Voy a usar una base de datos que ya tengo creada que se llama empleados.fbd.

  • Para copiarla de forma segura, primero voy a detener el servidor Firebird. para hacer esto, presiono Windows + R, y escribo services.msc y le doy enter. Aquí aparece la ventana de servicios… busco “Firebird Server” en la lista y lo selecciono, hago clic derecho y selecciono Detener. ¡Listo! 
  • Ahora, voy a la carpeta donde está mi base de datos maestra, que en mi caso esta en el disco c: en el directorio databases. Aquí está el archivo empleados.fbd Hago clic derecho, selecciono Copiar, luego Pegar en la misma carpeta. Ahora le cambio el nombre. La voy a llamar replica.fbd. 
  • Voy a subir esta réplica a un servidor Linux que tengo en Digital Ocean. Para hacer esto voy a usar el programa WinSCP, es gratuito y muy util. Abro los dos directorios, el de origen y el de destino y arrastro el archivo replica.fbd a la carpeta /home/databases que ya tenía creada en mi servidor remoto. Vamos a aprovechar para darle permisos de lectura y escritura a este archivo para no tener problemas de acceso más adelante.

Tarea 2: Configurar la réplica como de solo lectura

Ahora voy a hacer que mi réplica sea de solo lectura para que no se puedan modificar los datos por accidente. Necesitamos usar una herramienta de Firebird llamada gfix.

  • La replica ya esta en mi servidor Linux, así que abro la terminal y me conecto mediante el comando ssh como jourdan@167.99.45.205 
  • Me muevo al directorio donde esta instalado Firebird con el comando: cd /opt/firebird/bin/. Si hago un listado del directorio podemos observar que aquí está el programa gfix. Ahora, ejecuto el siguiente comando:
    sudo ./gfix -replica read_only ‘/home/databases/replica.fbd’ -user sysdba -pass masterkey
    ./ (el punto seguido de una barra) significa que estoy ejecutando algo en esta misma carpeta, -replica read_only pone mi base en modo solo lectura, y uso las credenciales predeterminadas sysdba y masterkey.
  • ¡Perfecto! La réplica ya está en modo solo lectura.

Tarea 3: Configurar el archivo replication.conf

Ahora voy a editar un archivo de configuración llamado replication.conf donde vamos a definir la información para conectar la base de datos maestra con la réplica.

  • Abro el explorador de archivos y voy a C:\Program Files\Firebird\Firebird_5_0\. Aquí está replication.conf. Primero hago una copia de seguridad: clic derecho, copiar, pegar, y la renombro como replication.conf.bak. Muy recomendable por si algo sale mal.

Abro el archivo original con mi editor de texto favorito. Hay mucho texto comentado, lo borro todo. Ahora escribo esto:
database = C:\databases\empleados.fbd

{

sync_replica = sysdba:masterkey@167.99.45.205/3050:/home/databases/replica.fbd
}

  • En donde database es la ruta donde se encuentra la base de datos maestra y sync_replica es la ruta y las credenciales de la base de datos que nos va a servir de replica.

Tarea 4: Habilitar la replicación en la base de datos maestra

Vamos a decirle a la base de datos maestra que empiece a replicar, para hacer esto abro DBeaver, mi herramienta favorita para bases de datos, y me conecto a la base de datos maestra. Me voy a la consola SQL, escribo los siguientes comandos:

ALTER DATABASE INCLUDE ALL TO PUBLICATION;
ALTER DATABASE ENABLE PUBLICATION;

Y los ejecuto. Esto activa la replicación. 

Ahora voy a encender de nuevo el servidor Firebird. Presiono Windows + R, escribo services.msc, busco “Firebird Server” en la lista, clic derecho e Iniciar.

Probemos si funciona, abro dos ventanas de DBeaver, una conectada a la base de datos maestra y la otra a la réplica, abrimos la tabla empleados en ambas bases de datos y en la réplica voy a ajustar el refresh para que se actualice cada 5 segundos y podamos ver los cambios. Como podemos ver si hago cualquier movimiento en la base de datos maestra, estos cambios se ven reflejados prácticamente de inmediato en la réplica.

Es importante notar que si quiero modificar algo en la base de datos réplica esto manda un error ya que está base de datos está configurada como de solo de lectura para de esta forma no corromper la integridad de los datos.


Tarea Adicional: Convertir la réplica a una base de datos regular

Si quiero usar mi réplica como una base de datos regular, por ejemplo, tras una falla, hago esto:

En mi servidor Linux, voy a /opt/firebird/bin/ y ejecuto:

sudo ./gfix -replica none ‘/home/databases/replica.fbd’ -user sysdba -pass masterkey

Esto quita el modo réplica.

En DBeaver me conecto a la réplica y desde la consola SQL escribo y ejecuto los siguientes comandos:

ALTER DATABASE EXCLUDE ALL FROM PUBLICATION;
ALTER DATABASE DISABLE PUBLICATION;

Ahora mi réplica ya es una base de datos independiente totalmente funcional.


¿Qué hacer si no funciona?

Si algo falla te recomiendo hacer estas revisiones:

  • Comprobar que el puerto 3050 esté abierto en el firewall, este puerto es el puerto por default en Firebird, tanto en el servidor donde se encuentra la base de datos maestra como donde se encuentra la réplica.
  • Verificar que las rutas que establecimos en el archivo replication.conf estén bien escritas y las credenciales para acceder a la base de datos sean las correctas.
  • Asegúrate que los archivos de las bases de datos tengan los permisos de lectura y escritura necesarios.

Cierre

¡Listo! Acabo de replicar una base de datos Firebird ¿Qué te pareció? Déjame un like si este video te ayudó, suscríbete para más tutoriales y nos vemos en el próximo video.

Deja un comentario