Está en la página 1de 15

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7 PARA

REPLICACIN DE BASE DE DATOS POSTGRES

KAREN VANESSA ANGULO SOGAMOSO


DANILO GUSTAVO GIL SIERRA

DOCENTE: JOHN FREDDY PARRA PEA

UNIVERSIDAD DISTRITAL FRANCISCO JOS DE CALDAS


FACULTAD DE INGENIERA
BASES DE DATOS II
BOGOT, ABRIL DE 2016

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

TABLA DE CONTENIDO

INTRODUCCIN................................................................................................... 3
OBJETIVO GENERAL............................................................................................ 5
OBJETIVOS ESPECFICOS.................................................................................... 5
CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7 PARA REPLICACIN DE
BASE DE DATOS POSTGRES................................................................................ 6
a.

Configuracin del servidor Maestro.................................................................6

b.

Configuracin del servidor esclavo..................................................................9

c.

Prueba de replicacin.................................................................................. 11

CONCLUSIONES................................................................................................ 12
REFERENCIAS................................................................................................... 12

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

INTRODUCCIN
PostgresSQL ofrece la posibilidad de sincronizar dos servidores de base de datos
mediante Replicacin de manera nativa. Existen distintos tipos de replicacin de
servidores, en este caso, se configurara un esquema Maestro-Esclavo, en el que
un servidor Maestro, recibe y ejecuta todas las transacciones (escritura y lectura)
y, adems, actualiza a un servidor Esclavo, que, nicamente, ser utilizado para
realizar consultas o lo que bien podra llamarse operaciones de lectura
(Iferminmontilla.com, 2016)
Pero por qu es necesario realizar un proceso de este tipo, la replicacin es un
concepto clave, ya que, es proceso de intercambio datos de transacciones para
asegurar la consistencia entre nodos de bases de datos redundantes, es decir, es
el proceso de copiar y mantener los elementos de una base de datos en mltiples
bases de datos que forman un sistema de bases de datos distribuido (Scribd,
2016)

Figura 1.Sistema de replicacin utilizando Streaming Replication y File-based Log Shipping

La replicacin dentro de una base de datos ofrece una serie de ventajas como:
Alta disponibilidad (high availability): Se puede incrementar la disponibilidad de
una base de datos mediante la replicacin en un sistema distribuido. Si una de las
mquinas del sistema falla, las otras podrn satisfacer las necesidades del cliente
(Scribd, 2016).
3

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

Balance de carga (load balancing): La replicacin se puede utilizar para hacer un


balance descarga. sta es una tcnica usada para compartir el trabajo a realizar
entre varias computadoras (Scribd, 2016).
Confiabilidad: Debido a que existen varias copias de los datos disponibles en el
sistema, se cuenta con un mecanismo confiable de recuperacin de datos ante
fallos en algn nodo (Scribd, 2016).
Entonces existen algunas soluciones permiten modificar los datos solo a un
servidor. A este servidor se lo conoce como servidor de lectura/escritura
(read/write server, primario (primary server), o maestro (masterserver). Por otro
lado, existen servidores que rastrean los cambios del maestro estos son llamados
servidores de reserva (standby servers), o esclavos (slave servers) (Scribd,
2016).
Hay que tener presente que un servidor de reserva que no puede ser conectado
hasta que sea ascendido al nivel de servidor maestro se llama servidor en espera
semiactiva (warmstandby server) y uno que acepta conexiones y sirve a consultas
de slo lectura es llamado servidor de reserva caliente (hot standby server)
(Scribd, 2016), el que ser utilizado para este caso.
Teniendo claro algunos conceptos abordados anteriormente, a continuacin, se
presenta la configuracin de un esquema Maestro Esclavo para un sistema
operativo Centos 7 con una base de datos Postgres.

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

OBJETIVO GENERAL
Describir el funcionamiento bsico de la replicacin de informacin a travs de un
esquema Maestro-Esclavo con el fin de entender su configuracin bsica y sus
operaciones entre nodos los cuales establecen la consistencia en un sistema de
Bases de Datos.

OBJETIVOS ESPECFICOS

Establecer e identificar los conceptos y comandos bsicos asociados con el


esquema Maestro-Esclavo en PostgreSQL.
Realizar la configuracin exitosa del servicio de replicacin de informacin a
travs de PostgreSQL.
Investigar sobre los servicios de transferencia alternativos, de archivos
eficientes y utilizados con gran frecuencia.

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7 PARA


REPLICACIN DE BASE DE DATOS POSTGRES
En PostgreSQL podemos tener una configuracin de replicacin maestro-esclavo
(hot-standby) de forma fcil, entonces, para el desarrollo de este informe de
laboratorio se realizara la configuracin y puesta en marcha de una arquitectura
anteriormente descrita para contar con un ambiente de alta disponibilidad y con la
caracterstica de replicacin.
Configuracin del servidor Maestro
Como primer paso, se proceder a crear un usuario dentro de la base de datos,
para ello se acceder al usuario postgres de la mquina esto ser har mediante el
comando
# su - postgres
Una vez se haya ingresado como usuario postgres se tendr acceso al bash en
donde se podr definir una nueva cuenta de usuario en PostgreSQL que ser
creada exclusivamente para el proceso de replicacin, para este caso el usuario
ser llamado repuser y la sintaxis digitada en consola ser as:
-bash-4.2$ createuser nombreusu P contrasea c #mximo
de conexiones replication

Figura 1. Creacin de usuario repuser.

En donde,
createuser crea un nuevo usuario PostgreSQL(o ms precisamente, un
rol).
-P al hacer uso de este parmetro, createuser emitir una solicitud de a
contrasea del nuevo usuario. Esto no es necesario si no se planea usar
una autenticacin de contrasea.
-c Establece el nmero mximo de conexiones para el nuevo usuario. El
valor por defecto es no establecer lmites.
--replication El nuevo usuario tendr el privilegio de la REPLICACIN.
6

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

Creado el usuario que permitir la replicacin se verificar que haya quedado


correctamente incluido dentro del motor, esto se har mediante una sentencia que
se mostrara a continuacin, pero antes de realizar esta operacin es necesario
entrar al motor con el usuario Postgres.
# SELECT * FROM pg_user

Figura 2. Verificacin del usuario repuser dentro de pg_user

La tabla del sistema pg_user contiene todos los usuarios que estn registrados
en Postgres, por eso est ayudar al verificar que efectivamente se haya creado el
usuario. Despus de este paso, ser necesario volver al bash de Postgres
mediante la sentencia \q.
Estando en el bash, se acceder a la ruta /var/lib/pgsql mediante el
comando cd que es comnmente usado para cambiar de directorios. Una vez se
est en esta ruta, se crear una carpeta que tendr tarea de archivar los archivos
WAL (Write-Ahead Log) para este caso se llamar archive.
# mkdir archive
A continuacin se modificar el archivo de acceso con el usuario que se cre en
pasos anteriores, para esto accederemos al archivo pg_hba.conf el cual se utiliza
para definir cmo, dnde y desde qu sitio un usuario puede utilizar el cluster
PostgreSQL, la modificacin de este archivo se har mediante nano que es el un
sencillo editor de textos para el terminal que viene instalado por defecto. La
sintaxis para lograr este proceso es:
# nano /var/lib/pgsql/9.5/data/pg_hba.conf
Estando en el archivo en la parte inferior se adicionar la lnea para que el nuevo
usuario pueda obtener acceso a este servidor (al maestro), esta lnea:
host replication nomusuario dirIPEsclavo/mascara
tipoconexion
7

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Figura 3.

Fecha:

28/04/2015

Inclusin de la lnea dentro de pg_hba.conf

Esta lnea permite al usuario "repuser" del host 10.20.250.92 conectarse al


maestro como una replicacin standby, si la contrasea del usuario es
correctamente introducida.
Despus de guardar y cerrar el archivo, se tendr que modificar el archivo
postgresql.conf en donde se pueden cambiar todos los parmetros de
configuracin que afectan al funcionamiento y al comportamiento de PostgreSQL
en la mquina. Antes de modificarlo y sabiendo que informacin contiene por
seguridad se realizara una copia del archivo as:
# cp /var/lib/pgsql/9.5/data/postgresql.conf
postgresql.conf.old
Hecha la copia se acceder al archivo postgresql.conf mediante el comando
# nano /var/lib/pgsql/9.5/data/postgresql.conf
Y se proceder a modificar los siguientes parmetros as:
wal_level = hot_standby

Figura 4.

Configuracin del parmetro wal_level

archive_mode = on
archive_command = test | -f /var/lib/pgsql/archive/%c
&& cp %p /var/lib/pgsql/archive/%f

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Figura 5.

Fecha:

28/04/2015

Configuracin del parmetro archive_mode y archive_command

max_wal_senders = 3

Figura 6. Configuracin del parmetro max_wal_senders


Donde,
wal_level, determina cuanta informacin est escrita en el WAL. El valor
por defecto es minime, el cual escribe solo la informacin necesaria para
recuperarse de un accidente o un apagn inmediato. El archivo agrega un
requisito de iniciar sesin para el archivado de WAL, y
hot_standby promueve la adicin de informacin requerida para correr
queries de solo lectura en servidor de espera.
archive_mode, cuando archive_mode est habilitado, los segmentos
WAL completados son enviados a la bodega de archive al establecer
archive_command.
archive_command, El comando shell para ejecutar el archivado de un
segmento completado de archivos WAL. Cualquier %P en el string es
reemplazado por el nombre parche del archivo a almacenar, y cualquier %f
es reemplazado solo por el nombre del archivo. (El nombre parche es
relativo al directorio de trabajo del servidor, p.e., el directorio de los datos
del cluster.) Usar %% para importar un actual carcter % en el comando. Esto
es importante para el comando el retornar un estatus de salida cero solo si
tiene xito
max_wal_senders, Especifica el
nmero mximo de conexiones
concurrentes de los servidores de espera o transmite los clientes de la base
backup.
9

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

Es importante que realizadas estas modificaciones se guarde y cierre el archivo.


Para que todas las modificaciones sean actualizadas en la configuracin del
maestro, ser necesario reiniciar el servicio de la siguiente forma:
#/usr/pgsql-9.5/bin/pg_ctl restart
Finalmente, cuando el servicio se haya iniciado correctamente, se verificar que la
base de datos funcione de forma adecuada. Una vez hecho esto se cerrar la
conexin a la base de datos y posteriormente se detendr el servidor, para ello se
utilizara el comando anterior solo que se reemplazar la palabra restart por
stop.
Configuracin del servidor esclavo
Para comenzar con la configuracin del servidor esclavo, como primer paso ser
necesario detener el servicio de Postgres, esto se har mediante el comando que
se muestra a continuacin:
#/usr/pgsql-9.5/bin/pg_ctl stop

Figura 7.

Deteniendo el servicio en el servidor esclavo.

En seguida se mover la carpeta data que contiene toda la informacin de la


base de datos del esclavo, esto se har con el fin de proteger los datos alojados
en el motor de esta mquina, en este caso ser movida a la ruta home
# mv /var/lib/pgsql/9.5/data home
Movida la carpeta, se proceder a realizar una copia de seguridad de base del
maestro de la siguiente forma
#pg_basebackup h ipMaestro D /var/lib/pgsql/9.5/data
U nomUsuario v P -xlog-method=stream
Figura 8.

Realizando la copia de seguridad

Donde,
-h, Especifica el nombre del host de la maquina en la cual el servidor est
corriendo.
10

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

-D, Directorio para escribir la salida a pg_basebackup creara el directorio


y cualquier directorio padre si es necesario.
-U, Nombre del usuario a conectar
--xlog-method=method, incluye la transaccin requerida de inicio de
sesin de archivos (archivos WAL) en el backup. Esto incluir todas las
transacciones de inicio de sesin generadas durante el backup. Si esta
opcin es especificada, es posible empezar un postmaster directamente en
el directorio extrado sin necesitar la consulta de inicio de sesin del
archivo, haciendo as un backup completamente autnomo.
stream, Transmite la transaccin de inicio de sesin mientras el backup es
creado. Esto abrir una segunda conexin al servidor e inicia la transmisin
de la transaccin de inicio de sesin en paralelo mientras el backup corre.
Realizada la copia de seguridad, desde el bash se modificar el archivo
postgresql.conf a travs del comando:
# nano /var/lib/pgsql/9.5/data/postgresql.conf
Dentro del archivo buscaremos la lnea que contiene el parmetro hot_standby
y la modificaremos as:
hot_standby = on

Figura 9. Modificando la opcin hot_standby a on


Parmetro que es definido como la capacidad de correr queries en una base de
datos que est actualmente desempeando un archivo de recuperacin. La
replicacin de envo de inicio de sesin permite crear uno o ms nodos de espera
que son rplicas del nodo primario (o nodo maestro). Los nodos de espera pueden
entonces ser usados para acceso de solo lectura de query.
Ahora, se copiara el archivo recovery.conf.sample el cual al editarlo
proporciona los parmetros que PostgreSQL necesita para realizar una
recuperacin de archivo de una base de datos, o en su defecto para actuar como
11

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

un modo de espera de replicacin. Para copiar el archivo se utilizar la siguiente


sentencia:
#
cp
avr
/var/pgsql-9.5/share/recovery.conf.sample
/var/lib/pgsql/9.5/data/recovery.conf
Cuando recovery.conf est presente en el directorio data de PostgreSQL, se
lee al arrancar el postmaster y carga toda la configuracin alojada en este archivo.
Entonces, teniendo presente esto se modificar el archivo en las siguientes lneas:
standby_mode = on

Figura 10.

Modificando la opcin standby_mode

primary_conninfo = host=ipmaster port=5432 user=nomUser


password=contrasea
trigger_file= /tmp/postgresql.trigger.5432

Figura 11.

Modificando las opciones primary_conninfo y trigger_file

En donde,
standby_mode, Especfica si inicia el servidor PostgreSQL con espera o
no. Si este parmetro esta encendido, el servidor no detendr la
recuperacin cuando el final del archivo WAL sea alcanzado, pero se
mantendr intentando continuar la recuperacin por alcanzar nuevos
segmentos WAL usando restore_command y/o por conexin con el
servidor primario como especifica por el establecimiento de
primary_conninfo.
primary_conninfo, Especifica un string de conexin para ser usado por
el servidor de espera para conectar con el primario. El string de conexin
12

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

deber especificar el nombre del host (o direccin) del servidor primario,


asimismo como el nmero del puerto si no es el mismo que falta del
servidor de espera. Tambin especifica un nombre de usuario
correspondiente al rol que tiene los privilegios de REPLICACIN e INICIO
DE SESIN en el primario. Una contrasea necesita ser proveda tambin,
si el primario pide la autenticacin de contrasea.
trigger_file, Especifica un archivo trigger cuya presencia termina en la

recuperacin en la espera. Incluso si este valor no est establecido, aun se


puede promover la espera usando pg_ctl. Este ajuste no tiene efecto si
standby_mode est apagado.
Como paso final de la configuracin del servidor esclavo, se iniciar Postgres para
cargar las modificaciones hechas.
#/usr/pgsql-9.5/bin/pg_ctl start
Prueba de replicacin
Para concluir y corroborar que todos los pasos hechos anteriormente funcionan
correctamente, se har una prueba de replicacin. En primera medida ser
necesario iniciar el servidor de Postgres en el maestro esto se har mediante el
comando:
#/usr/pgsql-9.5/bin/pg_ctl start
Una vez se haya iniciado la base de datos, se proceder a hacer una modificacin
como lo muestra la siguiente figura.

Figura 12.

Prueba en el servidor maestro, se actualizo la tabla poniendo vacio para todos los usuarios
registrados la clave

13

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

Terminada la operacin sobre la base de datos, se comprobar en el esclavo que


el cambio o la modificacin hecha haya sido replicada. La siguiente figura muestra
la replicacin exitosa en el esclavo.

Figura 13.

Prueba en el servidor esclavo.

14

CONFIGURACIN DE MAESTRO Y ESCLAVO EN CENTOS 7


PARA REPLICACIN DE BASE DE DATOS POSTGRES

Fecha:

28/04/2015

CONCLUSIONES
Contar con un sistema de replicacin Maestro-Esclavo apropiado depende de
varios factores, por lo que es necesario definirlos adecuadamente.
Un sistema de replicacin es muy importante para una organizacin que
cuenta con informacin sensible, para aquellas que manejan grandes
volmenes de datos, o para las que utilizan acceso remoto a la informacin.

REFERENCIAS
Iferminmontilla.com. (2016).
Iferminmontilla.com

Recuperado

el

25

de

Abril

de

2016,

Scribd.
(2016).
Recuperado
el
25
de
Abril
de
2016,
https://es.scribd.com/doc/124248224/Replicacion-PostgreSQL
Postgresql.org. (2016). Recuperado el 25 de Abril
http://www.postgresql.org/docs/9.5/static/index.html

de

2016,

de
de
de

DigitalOcean. (2013). Recuperado el 25 de Abril de 2016, de


https://www.digitalocean.com/community/tutorials/how-to-set-up-masterslave-replication-on-postgresql-on-an-ubuntu-12-04-vps

15

También podría gustarte