Siempre me ha llamado la atención la relación del software libre con los animales. Multitud de programas los utilizan como icono o en algunos casos, como el que nos ocupa cogen directamente el nombre de uno. Quizás esto daría para un post entero, pero de momento vamos a centrarnos en Bucardo, que además de ser una subespecie de cabra montesa, ya extinguida por cierto, es una herramienta para sincronizar y replicar bases de datos.
Por motivos de trabajo, llevo varios días haciendo algunas pruebas con ella, y de momento es bastante prometedor. Según la vaya conociendo más trataré de ir haciendo algún post más explicativo de como usarla, pero de momento daré unas pinceladas como introducción.
Como decía, Bucardo es una herramienta que sirve para sincronizar y replicar bases de datos PostgreSQL, permitiendo que dicha sincronización se haga en formato Master-Slave, es decir una base de datos donde se actualiza la información y una o varias de sólo lectura que se sincronizan con la primera, o en formato Multi-Master, con dos bases de datos sobre las que se actualiza información y que se sincronizan entre sí. En la propia wiki de PostgreSQL podéis ver una tabla resumen con las distintas herramientas que hay para sincronización y replicación y los tipos que soportan cada una.
Si miramos un poco dentro de Bucardo, vemos que en esencia no es más que un conjunto de scripts en Perl junto con un demonio que se encarga de monitorizar las distintas bases de datos. Se instala en un único punto, es decir, no hace falta que lo instalemos en todos los servidores de bases de datos que tengamos. Simplemente necesitaremos un clúster de PostgreSQL donde Bucardo creará su propia base de datos. En ella, iremos añadiendo la información que necesita para llevar a cabo la sincronización, rellenando las diferentes tablas con los datos de las diferentes instancias de PostgreSQL que queremos replicar.
La sincronización de la información se hace de forma asíncrona, es decir, una vez que hay un cambio en la base de datos maestra, este se envía a los esclavos o a otro maestro, pero sin preocuparse de si la información llega al destino o no. Esto puede suponer un problema, ya que en caso de que el servidor o servidores de destino no estén conectados y en funcionamiento en ese momento, la información se perderá.