Documentos de Académico
Documentos de Profesional
Documentos de Cultura
usando repmgr.
JEL/ presente instructivo tiene como finalidad, mostrar los pasos básicos necesario para la
U
instalación y configuración de un proceso de replicación (maestro – esclavo) en
A
PostgreSQL versión 9.6, utilizando repmgr versión 4.2
N
La replicación es la transmisión de información derivada de las modificaciones de estado,
de una base de datos a otra, en pocas palabras, todas las operaciones que que
T
modifiquen el estado de la BD se transmiten a otra BD que “replica” las operaciones, de
R
forma que ambas BD tengan la misma información.
U
C
Dentro
U
de las formas de replicación tenemos:
P
Maestro-maestro (multi-master): En éste modo, todos los nodos involucrados están en
E
capacidad
I de ejecutar operaciones de Lectura/Escritura (read/writer). En pocas palabras,
cualquier nodo involucrado está en capacidad de actualizar los datos. Para mantener la
consistencia de los datos, el proceso de replicación involucra tareas de resolución de
conflictos, en algunos casos según el número de nodos involucrados, puede aumentar la
latencia en la comunicación.
Maestro-esclavo: En éste modo, todos los cambios son registrados en el nodo principal, el
cual es el único habilitado para la función Lectura/Escritura (read/writer) y es el
encargado de efectuar la replicación ha todos los nodos involucrados, los cuales sólo
tienen capacidad para Lectura (read).
Un caso de uso típico para la replicación maestro – esclavo, con el modo en espera
(standby), el esclavo funciona como una copia de seguridad del maestro y puede ser
fácilmente activado en caso de un problema con el primario
repmgr es un conjunto de herramientas de código abierto para administrar la replicación
y la conmutación por error en un clúster de servidores PostgreSQL. Mejora las
capacidades incorporadas de Hot-Standby de PostgreSQL con herramientas para
configurar servidores de reserva, monitorear la replicación y realizar tareas
administrativas como failover o operaciones de cambio manual. La herramienta no
replica los datos en sí, sino que le permite controlar fácilmente la reproducción, el modo
de espera (hot standby) en el servidor (s) y controlar el estado de todo el proceso de
replicación.
Como ya indicamos, el ejemplo que a continuación presentamos estará dirigido a la
replicación maestro – Esclavo de dos nodos (master – esclavo) utilizando la herramienta
repmgr.
Equipo involucrados:
Servidor: nodo1 (master)
(192.168.0.125)
Servidor nodo2 (esclavo)
(192.168.0.53)
SERVIDOR ESCLAVO
13. Comprobar si desde el servidor “esclavo” se puede establecer conexión con el
servidor “mater”
root@nodo2:~# psql 'host=nodo1 user=repmgr dbname=repmgr connect_timeout=2'
psql (9.6.8)
conexión SSL (protocolo: TLSv1.2, cifrado: ECDHE-RSA-AES256-GCM-SHA384, bits: 256,
compresión: desactivado)
Digite «help» para obtener ayuda.
Repmgr=#
SERVIDOR MASTER
14. Editar archivo de configuración repmgr en servidor Master:
root@nodo1:~# vim /etc/repmgr.conf
Efectura los siguientes cambios:
# https://repmgr.org/docs/4.0/quickstart-repmgr-conf.html
# https://repmgr.org/docs/4.0/configuration-file-settings.html
# Un entero único mayor que cero que identifica el nodo.
node_id = 1
#Información de conexión a la base de datos como una cadena conninfo. Todos los
servidores
#del clúster deben poder conectarse al nodo local utilizando esta cadena.
conninfo = 'host=nodo1 user=repmgr dbname=repmgr connect_timeout=5 '
#Habilitar la supervisión
monitoring_history = yes
SERVIDOR ESCLAVO
20. Detener el servicio de postgresql:
postgres@nodo2:~$ pg_ctl -D /var/lib/postgresql/9.6/main stop
21. Eliminar el contenido del directorio de datos del postgresql:
postgres@nodo2:~$ rm -rf /var/lib/postgresql/9.6/main/
22. Crear archivo repmgr.conf:
root@nodo2:~# vim /etc/repmgr.conf
Incluir la siguiente información:
node_id=2
node_name=nodo2
conninfo='host=nodo2 user=repmgr dbname=repmgr connect_timeout=2'
data_directory='/var/lib/postgresql/9.6/main'
reconnect_attempts=6
reconnect_interval=10
failover=automatic
promote_command='/usr/bin/repmgr standby promote -f /etc/repmgr.conf --log-to-file'
follow_command='/usr/bin/repmgr standby follow -f /etc/repmgr.conf --log-to-file --
upstream-node-id=%n'
23. Iniciar sesión como usuario postgres:
root@nodo2:~# su postgres
24. Comprobar el modo de espera puede ser clonada:
postgres@nodo2:~$ repmgr -h nodo1 -U repmgr -d repmgr -f /etc/repmgr.conf standby
clone --dry-run
SERVIDOR MASTER
32. Verificar la replicación, desde el servidor master:
root@nodo1:~# psql -Urepmgr -drepmgr -c "SELECT * FROM pg_stat_replication;"
pid | usesysid | usename | application_name | client_addr | client_hostname |
client_port | backend_start | backend_xmin | state | sent_location |
write_location | flush_location | replay_location | sync_priority | sync_state
------+----------+---------+------------------+----------------+-----------------+-------------
+-------------------------------+--------------+-----------+---------------+----------------+----------------
+-----------------+---------------+------------
9446 | 16384 | repmgr | nodo2 | 192.168.0.53 | | 51550 | 2018-
04-27 11:46:54.292661-04 | | streaming | 0/7000450 | 0/7000450 |
0/7000450 | 0/7000450 | 0 | async
(1 fila)