My Profile Photo

Er' blog de Arawako be Free!


Another site of a Venezuelan system administrator, pro Free Software


Bucardo

Replicación Multi Master para Postgresql

Instalación

Añadiendo repositorios de postgresql

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Añadiendo llave del repositorio y actualizando el sistema de paquetes

 sudo apt-get install wget ca-certificates
 wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
 sudo apt-get update
 sudo apt-get upgrade

Instalando paquetes necesarios para Bucardo

sudo apt-get install postgresql-9.6 bucardo postgresql-plperl-9.6

Instalando Bucardo

Preparando la base de datos bucardo
Editar /etc/postgresql/9.1/main/pg_hba.conf y añadir:

local   	bucardo         bucardo                                 md5  
host		bucardo			bucardo			localhost				md5  

Crear base de datos bucardo

createdb bucardo;
create role bucardo with superuser noinherit;
grant bucardo to bucardo;

Crear un usuario para bucardo y dando permisos a las rutas de este

useradd bucardo
passwd bucardo ****
chown postgres /etc/bucardorc
mkdir /var/run/bucardo && chown postgres /var/run/bucardo
usermod -aG bucardo postgres
alter user bucardo with encrypted password 'el_secret_de_la_DB';
grant all privileges on database bucardo to bucardo;
CREATE LANGUAGE plperlu;
grant all privileges on database bucardo to bucardo;
alter database bucardo owner to bucardo;

Editar el archivo bucardorc (este sera tomado como referencia del instalador)

dbport = 5432  
dbhost = localhost  
dbname = bucardo  
dbuser = bucardo  
dbpass = ****  

Correr el instalador de bucardo

su - postgres -c "bucardo install"
1. Host:           localhost  
2. Port:           5432  
3. User:           bucardo >>> Normalmente aparece postgres  
4. Database:       bucardo  
5. PID directory:  /var/run/bucardo  
>> Nota: Seguramente aparecera un error de password luego de correr la instalación, antes de darte dolores de cabeza, verifica el siguiente paso y ejecuta ***bucardo status***  

Editar el archivo /usr/bin/bucardo +/- en la linea 85

79               quiet        => 0,
80               verbose      => 0,  
81               quickstart   => 0,  
82               bcverbose    => 1,  
83               dbname       => 'bucardo',  
84               dbuser       => 'bucardo',  
85               dbpass       => 'el_secret_de_la_DB', (cambia undef; por el valos de tu md5 en la DB bucardo)  
86               sendmail     => 0,  
87               extraname    => '',  
88               logseparate  => 0,  
89               logextension => '',  
90               logclean     => 0,
91               batch        => 0,

Usando Bucardo

Agregar bases de datos a bucardo

bucardo add db name_01 db=db-name user=username pass=secret_md5 host=hostname01
bucardo add db name_02 db=db-name user=username pass=secret_md5 host=hostname02

Agregar tablas a replicar y crear grupo de replicación

bucardo add all tables db=name_01 relgroup=name_relgroup

Crear Grupo de replicación

bucardo add dbgroup name_dbgroup name_01:source name_02:source

Crear reglas de sincronización

bucardo add sync name_sync dbgroup=name_dbgroup relgroup=name_relgroup conflict_strategy=bucardo_source onetimecopy=2 autokick=0

Indicar metodo de syncronizacion, en este caso automatico

bucardo update sync qa_sync autokick=1

Aplicar cambios realizados

bucardo reload config

Chequear estado del servicio

bucardo status All