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