Guía para el uso del Administrador de la replicación para los clústeres de PostgreSQL repmgr
Requisitos de instalación:
Instalar (ubuntu): libxslt1-dev, libedit-dev, libpam0g-dev, postgresql-server-dev-9.1
Instalación de repmgr
(1) Bajar el código fuente de repmgr desde http://projects.2ndquadrant.com/repmgr
(2) Copiar y descomprimir en /tmp.
$ cp repmgr-1.2.0.tar.gz /tmp $ cd /tmp repmgr $ tar xvzf repmgr-1.2.0.tar.gz
(3) Compilar
$ make USE_PGXS=1
(4) Instalar
$ make USE_PGXS=1 install
(5) Ver versión de repmgr
$ repmgr --version $ repmgrd --version
(6) Creación de las llaves de intercambio:
--Para Nodo1
$ su postgres $ ssh-keygen -t rsa
--Para Nodo2
$ su postgres $ ssh-keygen -t rsa
--Intercambio de llaves entre ambos nodos
$ cp /var/lib/postgresql/.ssh/id_rsa.pub /home/gilbertoc/postgres/.ssh/authorized_keys $ cp /home/gilbertoc/postgres/.ssh/id_rsa.pub /var/lib/postgresql/.ssh/authorized_keys
--Prueba de funcionamiento de las llaves
$ ssh localhost $ ssh localhost -l postgres
(7) Configuración del postgresql.conf del Nodo1:
listen_addresses = '*' wal_level = hot_standby checkpoint_segments=30 archive_mode=on archive_command='cd .' max_wal_senders=10 wal_keep_segments=5000
(8) Configuración del postgresql.conf del Nodo2:
hot_standby=on
(9) Configuración del pg_hba.conf del Nodo1 y Nodo2:
host all all 127.0.0.1/32 trust host replication all 127.0.0.1/32 trust
(10) Crea en fichero /var/lib/pgsql/repmgr/repmgr.conf en el Nodo1:
cluster=test node=1 conninfo='host=127.0.0.1 dbname=test'
(11) Vaciar el dirctorio de datos del nodo2:
$ cd /home/gilbertoc/postgres/mycluster2 $ rm -rf *
(12) Clonar el Nodo2:
$ repmgr -D /home/gilbertoc/postgres/mycluster2 -f /etc/PostgreSQL/9.1/main/repmgr.conf -d test -p 5432 -U postgres -R postgres standby clone localhost --verbose
(13) Crear repmgr.conf en el Nodo2:
cluster=test node=2 conninfo='host=localhost port=5433 user=postgres dbname=test'
(14) Crear recovery.conf en el Nodo2:
standby_mode = 'on' primary_conninfo = 'port=5432 host=localhost user=postgres'
(15) Iniciar Nodo2:
$ pg_ctl -D /home/gilbertoc/postgres/mycluster2 -l logfile start
(16) Registrar ambos nodos:
$ repmgr -f /home/prime/repmgr/repmgr.conf --verbose master register $ repmgr -f /home/standby/repmgr/repmgr.conf --verbose standby register
(17) Pruebas de los Nodos:
--En el Nodo2:
$ psql -h localhost -p 5434 -d test insert into mitabla (id, nombre) values (4, 'Martinez'); *--ERROR: cannot execute INSERT in a read-only transaction
--En el Nodo1:
$ psql -h localhost -p 5432 -d test insert into mitabla (id, nombre) values (4, 'Martinez');