Replicacion en PostgreSQL con Hot Standby en Centos 7

Esta funcionalidad en el SGDB PostgreSQL permite acceder en modo de solo-lectura a todos los datos disponibles en el servidor esclavo a donde estamos replicando nuestras bases de datos, en un post anterior explicamos este concepto.

Realizaremos la configuración, y pruebas de replica, en 02 servidores con SOs Centos 7 y PostgreSQL 9.5.

IP Servidor maestro: 192.168.20.101
IP Servidor esclavo: 192.168.20.102

Servidor Maestro

Modificación en archivo postgresql.conf

listen_addresses = '*'
wal_level = hot_standby
max_wal_senders = 1
wal_keep_segments = 10
archive_mode = on
archive_command = 'rsync -a %p user@192.168.20.102:/home/directorio_user/%f'

listen_addresses: Define la dirección o direcciones IP que permitirá escuchar solicitudes a la base de datos.
wal_level: Define cuanta información se grabará en los archivos WAL generados.
max_wal_senders: Define las conexiones concurrentes o cuantos servidores de Standby se van a conectar al servidor maestro.
wal_keep_segments: Define el número de WAL logs que el servidor guardará en el directorio pg_xlog
archive_mode: Define la habilitación de archivos WAL en el servidor maestro.
archive_command: Define la copia de registros WAL a archivar en el servidor maestro y transferirlos al servidor esclavo.

Modificación en archivo pg_hba.conf

host replication all 192.168.20.102/32 trust

Con esto permitimos al servidor esclavo de IP 192.168.20.102, conectarse al servidor maestro con permiso de replicación.

Ahora generamos los archivos WAL, ejecutamos lo siguiente en la terminal de postgres:

SELECT pg_start_backup('copia')

Sacamos una copia del directorio de configuración de postgres, generalmente en esta ruta: /var/lib/pgsql/9.5/data/ exceptuando los archivos postmaster.opts, postmaster.pid, postgresql.conf, pg_hba.conf, postgresql.auto.conf, y ejecutamos en otra terminal lo siguiente:

SELECT pg_stop_backup()

Servidor esclavo

Modificación en archivo postgresql.conf

listen_addresses = '*'
hot_standby = on

Creación en archivo recovery.conf

En el directorio de PostgreSQL crearemos el archivo recovery.conf y agregaremos lo siguiente:

standby_mode = 'on'
primary_conninfo = 'host=192.168.10.101 port=5432 user=root password=password'
restore_command = 'cp /home/directory_user/%f %p'

Con esto definimos que el servidor esclavo va a esperar réplicas, a través del uso del comando primary_conninfo, donde se tiene seteado los datos del servidor maestro.

Sincronización de directorio de postgres

Sobrescribimos en el directorio de configuracion de postgres del servidor esclavo, la copia realizada en el servidor maestro.

Reiniciamos el servicio de postgres en cada servidor con el comando:

systemctl restart postgresql-9.5 
Share on FacebookTweet about this on TwitterShare on Google+

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *