Instalar y configurar repmgr para replicación PostgreSQL

En este artículo se muestra cómo compilar e instalar repmgr 1.1.0 en servidores maestro y esclavo, clonar la base de datos del maestro al esclavo, y registrar ambos nodos para supervisión. Incluye comandos, configuración mínima, verificación, lista de comprobación por rol, soluciones comunes y recomendaciones de seguridad y mantenimiento.
Resumen rápido de pasos
- Descargar repmgr-1.1.0 y compilar en ambos servidores.
- Instalar dependencias requeridas con zypper.
- Clonar la base de datos del maestro al esclavo (solo en esclavo).
- Crear /var/lib/pgsql/repmgr/repmgr.conf en ambos nodos y registrar los nodos.
- Verificar la replicación y realizar una prueba de escritura/lectura.
Importante: siga estos pasos tanto en el servidor maestro como en el esclavo donde corresponda. Haga copias de seguridad antes de operar en producción.
Definición breve
- repmgr: herramienta para administrar la replicación y recuperación en clústeres PostgreSQL. Facilita registro, promoción y monitoreo de nodos.
Paso 5. Instalar el código fuente de repmgr manualmente en maestro y esclavo
Descargue repmgr desde http://projects.2ndquadrant.it/sites/default/files/repmgr-1.1.0.tar.gz a /tmp.
Antes de compilar repmgr con PostgreSQL, instale paquetes necesarios:
zypper install make gcc postgresql-devel libxslt-devel pam-devel libopenssl-devel krb5-devel
Ahora compile repmgr e instale el software:
make USE_PGXS=1
make USE_PGXS=1 install
Verifique que repmgr se haya instalado correctamente:
repmgr --version
repmgrd --version
Asegúrese de que tanto el servidor maestro como el esclavo tengan repmgr instalado correctamente. En el siguiente paso clonaremos la base de datos del maestro en el esclavo (standby).
Paso 6. Clonar la base de datos maestro al esclavo (solo en esclavo)
Cambie al usuario postgres y ejecute el clon desde el servidor esclavo:
su - postgres
repmgr -D /var/lib/pgsql/data -d pgbench -p 5432 -R postgres --verbose standby clone pgmaster
En la salida verá mensajes de log indicando el progreso del clon.
Inicie PostgreSQL en el esclavo:
/etc/init.d/postgresql start
Nota: asegúrese de que el directorio de datos (-D) y el nombre de la base (-d) sean correctos para su instalación.
Paso 7. Configurar repmgr.conf en maestro y esclavo
Cree el directorio de repmgr y el archivo de configuración en ambos nodos. En el maestro (/var/lib/pgsql/repmgr/repmgr.conf):
cluster=test
node=1
conninfo='host=pgmaster user=postgres dbname=pgbench'
En el esclavo (/var/lib/pgsql/repmgr/repmgr.conf):
cluster=test
node=2
conninfo='host=pgslave user=postgres dbname=pgbench'
Sugerencia: use un usuario dedicado para repmgr (más abajo hay una checklist para crear este usuario) en lugar de postgres para producción.
Paso 8. Registrar nodos y arrancar el proceso de monitoreo
En el servidor maestro registre la base de datos como master:
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose master register
En el servidor esclavo registre la base de datos como standby:
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose standby register
Compruebe el estado y la diferencia de registros:
psql pgbench -c 'select * from repmgr_test.repl_status'
Debería ver que el esclavo va con una latencia pequeña (por ejemplo, segundos) respecto al maestro.
Prueba de replicación (verificación)
En el maestro ejecute:
psql pgbench -c "create table test ( test varchar(30));"
psql pgbench -c "insert into test values ( 'test123');"
En el esclavo verifique que la fila exista:
psql -h pgslave pgbench -c "select * from test"
Si ve la fila, la replicación está funcionando.
Trabajo pendiente y recomendaciones
Esta es una guía rápida para configurar replicación SR (streaming replication) en PostgreSQL 9 con repmgr. Elementos a mejorar y comprobar:
- Crear un usuario dedicado para repmgr en lugar de usar postgres.
- Hay un bug conocido en versiones antiguas de repmgr; consulte el commit de corrección:
https://github.com/greg2ndQuadrant/repmgr/commit/7427988628f754e57069453d65a71f79117c3a3d
- Lea la documentación oficial de repmgr para procedimientos de promoción cuando el maestro falle; practique el proceso en entornos de prueba.
- Existen varias formas de verificar la replicación; consulte la documentación de PostgreSQL para métodos alternativos.
- Lea el fichero README incluido en los paquetes de repmgr.
- Mantenga copias de seguridad regulares y pruebe restauraciones.
Lista de comprobación por rol antes de ejecutar en producción
Administrador de sistemas (SRE/DevOps):
- Tener backups consistentes y probados.
- Configurar firewall y permisos de red entre nodos.
- Crear usuario repmgr con los permisos mínimos necesarios.
- Habilitar monitorización de procesos y alertas para repmgrd y PostgreSQL.
DBA:
- Verificar compatibilidad de versiones entre PostgreSQL y repmgr.
- Revisar parámetros de WAL y recuperación (archive_mode, wal_level, max_wal_senders).
- Probar promoción y conmutación por error en entorno controlado.
Desarrollador/QA:
- Probar integridad de datos tras replicación.
- Probar latencia y comportamiento del sistema bajo carga.
Mini-metodología: cómo proceder en un despliegue seguro
- Preparar entorno de pruebas con mismas versiones.
- Automatizar instalación y configuración (scripts/Ansible).
- Validar clonación y sincronización en pruebas.
- Programar ventana de mantenimiento para producción.
- Ejecutar en producción y monitorizar.
- Documentar los pasos y responsables.
Casos en los que este procedimiento puede fallar (contrajemplos)
- Si las versiones de PostgreSQL y repmgr son incompatibles.
- Si los parámetros de WAL no permiten streaming (wal_level insuficiente o max_wal_senders bajo).
- Si permisos de red o firewall bloquean la conexión entre nodos.
- Si el espacio en disco o los permisos del directorio de datos impiden la clonación.
Solución rápida de errores comunes
- Error de conexión en conninfo: verifique host, usuario, puerto y firewall.
- fallas en make/compilación: instale dependencias y revise variables de entorno (PGXS).
- El esclavo no avanza en WAL: verifique configuración de wal_level, archive_mode y que el maestro esté enviando WAL.
Seguridad y operaciones (hardening)
- No utilice la cuenta postgres para repmgr en producción; cree un rol repmgr con privileges limitados.
- Asegure las conexiones con certificados TLS si la red atraviesa redes no confiables.
- Controle el acceso al directorio /var/lib/pgsql/repmgr y a los archivos repmgr.conf.
- Mantenga actualizaciones de seguridad para PostgreSQL y repmgr.
Criterios de aceptación (antes de marcar como listo)
- repmgr y repmgrd se instalan y muestran versión en maestro y esclavo.
- La clonación completa sin errores y PostgreSQL arranca en el esclavo.
- El comando SELECT de prueba en el esclavo devuelve las filas insertadas en el maestro.
- Ambos nodos aparecen registrados con estado coherente en repmgr.
Cheatsheet de comandos
- Instalar dependencias:
zypper install make gcc postgresql-devel libxslt-devel pam-devel libopenssl-devel krb5-devel
- Compilar e instalar repmgr:
make USE_PGXS=1 make USE_PGXS=1 install
- Clonar desde el esclavo:
su - postgres repmgr -D /var/lib/pgsql/data -d pgbench -p 5432 -R postgres --verbose standby clone pgmaster
- Registrar master/standby:
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose master register repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose standby register
- Ver estado:
psql pgbench -c 'select * from repmgr_test.repl_status'
Recursos y enlaces de referencia
- 2ndQuadrant repmgr: http://projects.2ndquadrant.com/repmgr
- PostgreSQL Wiki — Hot Standby: http://wiki.postgresql.org/wiki/Hot_Standby
- PostgreSQL Wiki — Binary Replication Tutorial: http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial
Resumen final
Este tutorial guía la instalación manual de repmgr 1.1.0, la clonación de un maestro a un esclavo y el registro de ambos nodos para supervisión. Para producción, cree un usuario dedicado, automatice el proceso y compruebe la promoción y recuperación en pruebas.
Notas finales:
- Siempre pruebe en un entorno de ensayo antes de aplicar en producción.
- Mantenga documentación de los pasos realizados y de los responsables.
Materiales similares
Kickstart para CentOS/Fedora — instalación automatizada

Ocultar puntuación en Snapchat — guía rápida

Cómo compartir pantalla en Microsoft Teams

Ver quién está conectado en Windows Server

Instalar APK en Android: guía segura
