Administración clústeres mediante repmgr

From PostgreSQL wiki

(Difference between revisions)
Jump to: navigation, search
(Created page with "Pondrémos a sus disposición un ejemplo del como utilizar repmgr para que entienda su funcionamiento. Este ejemplo es para uso académico.")
 
Line 1: Line 1:
Pondrémos a sus disposición un ejemplo del como utilizar repmgr para que entienda su funcionamiento. Este ejemplo es para uso académico.
+
Pondrémos a su disposición un ejemplo de como utilizar repmgr para que entienda su funcionamiento. Este ejemplo es para uso académico.
 +
 
 +
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.it/sites/default/files/repmgr-1.1.0.tar.gz
 +
 
 +
(2) Copiar y descomprimir en /tmp.
 +
 
 +
(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
 +
 
 +
$ 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
 +
 
 +
$ 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');

Revision as of 18:34, 14 November 2013

Pondrémos a su disposición un ejemplo de como utilizar repmgr para que entienda su funcionamiento. Este ejemplo es para uso académico.

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.it/sites/default/files/repmgr-1.1.0.tar.gz

(2) Copiar y descomprimir en /tmp.

(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

$ 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

$ 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');
Personal tools