DesarrolloLibre

Desarrollo Web, Android, juegos y mucho más

Categorias
13-07-2015

Como especifica el título para esta entrada, Bucardo es un sistema de replicación que en otras palabras permite "clonar" o "duplicar" registros dentre Base de Datos (fuentes-objetivos), ademas cuenta con soporte para manejar múltiples Base de Datos con relaciones maestros-esclavos.

Aunque el fuente debe ser una Base de Datos PostgreSQL el objetivo puede ser PostgreSQL, MySQL, Redis, Oracle, MariaDB, SQLite, o MongoDB.

Los pasos para instalar Bucardo en Linux es muy sencillo (como veremos en la siguiente sección) aunque Bucardo puede ser un poco dificil de instalar debido a varias configuraciones y dependencias necesarias a nivel del Sistema Operativo pero en esta entrada podrás encontrar una sección en donde hablamos de Errores que me ocurrieron mientras instalaba Bucardo.

Esta entrada ofrece una rápida pero completa vista a Bucardo comenzando por su instalación en un ambiente Linux, su configuración, algunos errores que te pueden aparecer en el proceso de su instalación y culminado la entrada realizando un pequeño experimento con una simple relación Maestro-Maestro con Base de Datos PostgreSQL.

Instalando Bucardo en Ubuntu -parte 1-

En esta sección daremos unos tips de como instalar Bucardo en su versión 5.3.1 en Ubuntu, aunque el procedimiento es el mismo para otras distribuciones Linux; primero descargamos el Bucardo.tar.gz desde la sección de descargas.

Desempaquetamos el paquete y nos ubicamos desde la terminal en la carpeta; para el momento en que se escribió esta entrada es la versión es la 5.3.1:

cd Bucardo-5.3.1/

Generamos el Makefile:

perl Makefile.PL

Generating a Unix-style Makefile
Writing Makefile for Bucardo
Writing MYMETA.yml and MYMETA.json
Lo más recomendable es que obtengas tu copia de bucardo desde su repositorio de GitHub en: git clone git://bucardo.org/bucardo.git

Finalmente instalamos Bucardo:

make
make install

En Fedora existe otro método para hacernos con una copia de Bucardo, y consiste en instalarlo mediante los repositorios:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm 
yum -y install bucardo

Configurando el ambiente en PostgreSQL para Bucardo

Una vez que instalamos la primera fase de Bucardo a través de los Makefile, vamos a PGAdmin o cualquier otro Administrador y creamos una Base de Datos y Rol (con SuperUsuario) llamada "bucardo":

Esquema de Bucardo en PostgreSQL

Configurando Bucardo -parte 2-

Ahora seguiremos con la instalación de Bucardo según las configuraciones realizadas en PostgreSQL; para ello debemos ejecutar en un terminal:

bucardo install

o -dependiendo de la fuente de instalación.-

bucardo_ctl install

Veremos la siguiente información:

Current connection settings:
1. Host:           
2. Port:           5432
3. User:           postgres
4. Database:       bucardo
5. PID directory:  /var/run/bucardo
Si el directorio /var/run/bucardo no existe, créelo a través de: mkdir /var/run/bucardo

Se especifica el Host, usuario y base de datos creados anteriormente:

Current connection settings:
1. Host:           localhost
2. Port:           5432
3. User:           bucardo
4. Database:       bucardo
5. PID directory:  /var/run/bucardo

Errores que me ocurrieron mientras instalaba Bucardo:

Si todo sale bien y no ocurrió algún otro error, FELICIDADES, acabas de completar la instalación de Bucardo y ahora puedes crear todas las relaciones entre Base de Datos que quieras.

Creando una relación Maestro-Maestro con Bucardo

En esta última sección veremos cómo crear una simple relación maestro esclavo con los comandos de Bucardo los cuales explicaré brevemente a continuación:

Puedes encontrar la documentación oficial y completa en los enlaces al final de esta entrada.

Una vez entendido los comando básicos para crear un sistema de replicación, ahora vamos a crear una relación Maestro-Maestro en donde una de las Base de Datos se encuentra local y otra remota; para ello empleamos los siguiente comandos:

bucardo add database midblocal dbname=oo user=bucardo pass=bucardo
bucardo add database midbremoto dbname=oo user=postgres pass=postgres host=<IPRemota>
bucardo add table public.estatus db=midblocal
bucardo add dbgroup mydbgroup midblocal:source midbremoto:source relgroup=myrels
bucardo add sync mysync relgroup=myrels dbs=mydbgroup autokick=0
bucardo update sync mysync autokick=1
bucardo reload config

Finalmente iniciamos Bucardo con:

bucardo start

Y verificamos su estatus con:

bucardo status

Ahora prueba insertar registros en cualquiera de las tablas de las Base de Datos que estén sincronizadas y deberían replicarse para mantenerse sincronizadas.

Algunos enlaces de interés:


Publicidad

Give me for a beer!

Algunos artículos que te pueden interesar

Cargas asíncronas de imágenes con jQuery en una web

Cargas asíncronas de imágenes con jQuery en una web

Se explica como emplear imágenes pequeñas en la definición del sitio web y luego -al cargar por completo la página web- cargar las imágenes con mayor resolución asíncronamente con jQuery.

Andrés Cruz 11-04-2016

Cómo emplear una base de datos externa SQLite en Android

Cómo emplear una base de datos externa SQLite en Android

Andrés Cruz 04-05-2017

Los web workers para ejecutar JavaScript en paralelo

Los web workers para ejecutar JavaScript en paralelo

Los web workers permiten ejecutar secciones de código de archivos JavaScript en paralelo en un hilo aparte; en esta entrada veremos cómo trabajar con los web workers.

Andrés Cruz 01-10-2015