21
UNIVERSIDAD DE EL SALVADOR FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE DEPTO. DE INGENIERIA Y ARQUITECTURA REPLICACION EN POSTGRESQL CON SLONY-I EN WINDOWS CATEDRA: BASE DE DATOS CATEDRATICO: ING. ALEXANDER CALDERON PRESENTADO POR: GARAY CALDERON KEVIN ALONSO MENJIVAR SALAS JOSE ALBERTO NUÑEZ EDVIN MANOLO HERRERA MEJIA LUIS ALBERTO SANTA ANA, 22 DE MAYO DE 2012

Postgre sql y_replicacion_slony_p

Embed Size (px)

Citation preview

Page 1: Postgre sql y_replicacion_slony_p

UNIVERSIDAD DE EL SALVADOR

FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE

DEPTO. DE INGENIERIA Y ARQUITECTURA

REPLICACION EN POSTGRESQL CON SLONY-I EN WINDOWS

CATEDRA: BASE DE DATOS

CATEDRATICO: ING. ALEXANDER CALDERON

PRESENTADO POR:

GARAY CALDERON KEVIN ALONSO

MENJIVAR SALAS JOSE ALBERTO

NUÑEZ EDVIN MANOLO

HERRERA MEJIA LUIS ALBERTO

SANTA ANA, 22 DE MAYO DE 2012

Page 2: Postgre sql y_replicacion_slony_p

Índice general

Contenido pag Sobre PostgreSQL .......................................................................................................................... 1

Características de PostgreSQL ........................................................................................................ 1

Herramientas graficas de administración de bases de datos en PostgreSQL................................... 1

La replicación de datos................................................................................................................... 2

Herramientas de replicación para PostgreSQL ................................................................................ 2

Sobre Slony-I .................................................................................................................................. 3

Aspectos importantes antes de poner en marcha una replicación .................................................. 4

Replicando una base de datos de PostgreSQL con Slony-I en Windows .......................................... 5

Page 3: Postgre sql y_replicacion_slony_p

1

POSTGRESQL Y REPLICACION

Sobre PostgreSQL

PostgreSQL es una potente herramienta de gestión de bases de datos

relacional y orientada a objetos (SGBDOO en sus siglas en ingles).

PostgreSQL se distribuye bajo licencia BSD (Berkeley Software Distribution). Es una licencia de software libre permisiva, lo que permite su uso, redistribución, modificación con la única restricción de mantener el

copyright del software a sus autores.

Características de PostgreSQL

Entre las características de PostgreSQL podemos destacar las siguientes:

Es multiplataforma, PostgreSQL en sus versiones más recientes está disponible para 34 plataformas.

Cuenta con un rico conjunto de tipo de datos, permitiendo además

su extensión mediante tipos y operadores definidos y programados

por el usuario. Sus opciones de conectividad abarcan TCP/IP, sockets Unix y NT

además de soportar completamente ODBC.

Soporte para vistas, claves foráneas, integridad referencial, disparadores (triggers), procedimientos almacenados y casi todos los

tipos de datos y operadores soportados en SQL.

Su administración se basa en usuarios y privilegios.

Herramientas graficas de administración de bases de datos en

PostgreSQL.

Existen varias herramientas que se pueden utilizar para la manipulación

de bases de datos en PostgreSQL, dichas herramientas nos permiten ver y

trabajar con casi todos los objetos de la base de datos, examinar sus

propiedades o realizar tareas administrativas. Entre estas herramientas

podemos mencionar:

PHPPGadmin: esta herramienta está basada en interfaz web.

Page 4: Postgre sql y_replicacion_slony_p

2

PGexplorer: entorno de escritorio.

PGadmin: entorno de escritorio.

PGaccess: entorno de escritorio.

Psql: Cliente de consola.

Etc.

Todas estas pueden encontrar en sus respectivas versiones.

La replicación de datos La replicación es una técnica que se basa en mantener objetos de las

bases de datos en múltiples ubicaciones. De esta forma se puede tener

una réplica exacta o parcial de la base de datos que puede usarse para

una restauración de emergencia o bien para realizar consultas sobre ella y

aligerar la carga del servidor principal.

La replicación es una buena alternativa para tener disponibilidad de

información cuando un servidor se cae. La replicación no suplanta los

backup’s, sino, simplemente garantiza la operatividad.

Existen algunos métodos de replicación entre los cuales se pueden

mencionar:

Multimaestro

Maestro -esclavo

Multimaestro: es un método de replicación de bases de datos que permite

que los datos sean almacenados por un grupo de computadoras y además

estos datos pueden ser actualizados por cualquier nodo de este grupo. Con

este tipo de replicación todos los nodos participantes son de

lectura/escritura.

Maestro-esclavo: con este método de replicación los datos también son

almacenados en un grupo de computadoras con la diferencia de que aquí

solamente el nodo maestro es de lectura/escritura y el esclavo solo de

lectura.

Herramientas de replicación para PostgreSQL

Page 5: Postgre sql y_replicacion_slony_p

3

Hay varias herramientas que actúan como middleware (intermediario)

entre PostgreSQL y la replicación de datos, entre las que se pueden

destacar:

Slony-I

Rubyrep

PGpool

Hot Standby / Streaming Replication

De estas herramientas se elegirá la que más se ajustes a las necesidades

que se tengan, en nuestro caso hemos elegido Slony-I y será en la cual

profundizaremos nuestro estudio.

SLONY-I

Sobre Slony-I Slony-I es un sistema de replicación asíncrono para PostgreSQL de una

base de datos maestra hacia una o múltiples bases de datos hijas. Slony-I

realiza las actualizaciones a través de disparadores o triggers por lo que

actualmente solo puede realizar replicación de tablas y secuencias.

Replicación asíncrona

Que una replicación sea asíncrona significa que cuando una transacción

para la base de datos es enviada al servidor maestro no se garantiza que

esté disponible para los nodos esclavos.

Triggers

Un trigger (o disparador) en una Base de datos, es un procedimiento que

se ejecuta cuando se cumple una condición establecida al realizar una

operación. Dependiendo de la base de datos, los triggers pueden ser de

inserción (INSERT), actualización (UPDATE) o borrado (DELETE). Algunas

bases de datos pueden ejecutar triggers al crear, borrar o editar usuarios,

tablas, bases de datos u otros objetos.

Situaciones en las cuales no es recomendable utilizar slony-I

Bases de datos donde regularmente se hagan cambios a esquemas y

definiciones de tablas (DDL).

Cuando se quiere un sistema de replicación que por sí mismo de

notificaciones sobre fallos como por ejemplo nodos caídos.

Page 6: Postgre sql y_replicacion_slony_p

4

De lo contrario Slony-I es una opción para tomar muy en cuenta al querer

realizar una replicación.

Aspectos importantes antes de poner en marcha una replicación

Antes de poner en marcha una replicación usando Slony-I es importante

tener claro algunos conceptos como:

Clúster

Nodo

Set de replicación

Origen, Proveedores y Suscriptores

Demonio slon

Comando slonik

Cluster: conjunto de bases de datos PostgreSQL dentro de las cuales

ocurre la replicación.

Nodo: un nodo es una base de datos que participa en el proceso de

replicación.

Set de replicación: Es un conjunto de tablas y secuencias que se

replicaran. Nótese que no se replican todas las tablas, sino que se tienen

que especificar explícitamente.

Origen, proveedores y suscriptores: Cada set de replicación tiene un

nodo de origen, que es la base de donde se obtiene información. Los nodos

que reciben la información se denominan nodos suscriptores. Dichos nodos suscriptores se pueden convertir en proveedores si a su vez tienen

otros nodos suscriptores.

Demonios slon: Para cada nodo en el clúster, existe un proceso slon que

administra la actividad de replicación para ese nodo.

Comandos slonik: es un pequeño intérprete de comandos que incluye

comandos utilizados para la manipulación del clúster de replicación.

También se recomienda tomar en cuenta las siguientes consideraciones:

Utilizar exactamente la misma versión de Slony en todos los nodos.

Utilizar versiones 8.3 o superior de PostgreSQL para utilizar Slony-I 2.0.4

Page 7: Postgre sql y_replicacion_slony_p

5

Sincronización de hora de sistemas operativos donde estén las bases

involucradas en la replicación.

Replicando una base de datos de PostgreSQL con Slony-I en

Windows Requisitos:

Para la realización de nuestra replicación es necesario tener instaladas las

siguientes herramientas: PostgreSQL 8.4 o compatible

PGadmin III

Slony-I 2.0.4

Descripción de los elementos:

PostgreSQL 8.4: es el gestor de base de datos, el cual puede ser instalado

desde el gestor de paquetes de Linux o se puede descargar desde su sitio

oficial (http://www.postgresql.org/ftp/binary) tanto para Linux como para

Windows.

PGadmin III: como se dijo anteriormente existen varias herramientas para

la manipulación de bases de datos PostgreSQL entre los que esta

PGadmin.

PGadmin III es una interfaz gráfica que soporta todas las características de

PostgreSQL y facilita enormemente la administración. La aplicación

también incluye un editor SQL con resaltado de sintaxis, un editor de

código de la parte del servidor, un agente para lanzar scripts programados,

soporte para el motor de replicación Slony-I y mucho más.

Al igual que PostgreSQL esta herramienta también se encuentra disponible

en los repositorios de Linux y se puede instalar de esa forma o

descargándolo de su sitio web oficial

(http://www.postgresql.org/ftp/pgadmin3/release/).

Slony-I 2.0.4: como ya vimos anteriormente Slony es el software que

permite la replicación en PostgreSQL, su instalación puede ser también

desde el gestor de paquetes en Linux o utilizando el Stack Builder que es

una herramienta que se instala cuando instalamos el gestor PostgreSQL

en windows y sirve para instalar complementos para dicho gestor.

Page 8: Postgre sql y_replicacion_slony_p

6

Para instalar Slony-I desde el Stack Builder debemos seguir los siguientes

pasos:

1- Inicio

2- Todos los programas

3- PostgreSQL

4- Aplicación Stack Builder, clic derecho ejecutar como

administrador y nos aparecerá la siguiente pantalla.

5- En la pestaña seleccionamos PostgreSQL 8.4 on port 5432 como

se muestra en la siguiente imagen. Presionamos siguiente.

Page 9: Postgre sql y_replicacion_slony_p

7

6- Al dar clic en siguiente se no muestra una ventana con las

categorías de complementos que podemos instalar para el caso

debemos elegir soluciones de replicación.

7- Y chequeamos Slony-I y siguiente.

Page 10: Postgre sql y_replicacion_slony_p

8

8- Nos aparecerá la ventana con el resumen de los paquetes

seleccionados para instalar.

9- Para el caso solo instalaremos Slony-I. Si todo es correcto

presionamos siguiente. Se instalaran los paquetes seleccionados y le

damos finalizar. Cabe mencionar que para realizar la instalación de

este modo debemos de tener conexión a internet.

Con los pasos anteriores ya tendremos a disposición Slony-I 2.0.4 para

PostgreSQL 8.4

CASO PRACTICO DE REPLICACION.

Ya teniendo todo lo necesario pasamos a lo que es la replicación en sí. A

continuación se muestra como realizar dicha replicación de tipo maestro-

esclavo en Windows 7 con los detalles mostrados en la imagen.

Page 11: Postgre sql y_replicacion_slony_p

9

Consideraciones:

Ambos nodos deberán tener instalado PostgreSQL 8.4, Slony-I y

PGadmin.

La base de datos a replicar deberá crearse tanto en el nodo maestro

como en el nodo esclavo y debe de ser idéntica, a sea debe llamarse

igual tanto la BD como las tablas y campos, tener los mismos

campos, etc.

Paso 1: Crear la base de datos

1.1- Crear la base de datos que queremos replicar (si ya se tiene creada

la BD saltar a siguiente paso) para el caso utilizaremos la base de

datos mini_agenda la cual se muestra a continuación:

1.2- El siguiente paso será pasar la base de datos al gestor PostgreSQL

8.4 para ello utilizaremos PGadmin III, deberá quedar de la siguiente

manera:

Page 12: Postgre sql y_replicacion_slony_p

10

1.3- Esta configuración debe de estar en ambos nodos

Paso 2: Configurar el Slony-I

2.1- Ya teniendo creada la base de datos, el siguiente paso es agregar

desde el PGadmin la ruta a Slony-I para ello nos vamos a FileOpciones slony_I pathc:\program Files\ PostgreSQL\8.4

recordemos que esta es la ruta donde se instalo Slony-I por lo que si

especificamos otro directorio al instalarlo esta ruta variaría.

Page 13: Postgre sql y_replicacion_slony_p

11

2.2- Ademas de agregar la ruta anterior, debemos de verificar que

tengamos disponible el lenguaje plpgsql.

Si no esta disponible debemos agregarlo de la siguiente manera

Page 14: Postgre sql y_replicacion_slony_p

12

FileOptionsdisplay y chequiamos Lenguages

Luego clic derecho sobre lenguajenuevo lenguajeplpgsql

Page 15: Postgre sql y_replicacion_slony_p

13

Paso 3: configurar firewall de windows

3.1- Crear una nueva regla de entrada para que nuestro firewall permita la

conexión a través del puerto 5432. Para ello nos dirigimos a Panel de controlSistema y seguridadfirewall de Windowsconfiguración

avanzadareglas de entradanueva reglapuerto.

Al hacer clic en siguiente nos aparece la ventana para especificar puerto y

protocolo para el caso elegimos TCPPuertos locales especificos. El

puerto en este caso es el de postgeSQL o sea 5432

Page 16: Postgre sql y_replicacion_slony_p

14

Siguiente y permitir conexión

Después seleccionamos dominio y privado

Page 17: Postgre sql y_replicacion_slony_p

15

Luego le colocamos un nombre y finalizar

Listo ya tenemos creada nuestra entrada para permitir conexiones remotas

en Windows.

Paso 4: configurar el archivo pg_hba.conf

4.1- abrir el archivo C:\Program Files \PostgreSQL

\8.4\data\pg_hba.conf. Este deberá ser abierto con el bloc de notas.

4.2-modificar el archivo para que quede de la siguiente manera

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# IPv4 local connections:

host all all 127.0.0.1/32 md5

#maestro host all all 10.0.10.2/24 md5

#esclavo

host all all 10.0.10.3/24 md5

# IPv6 local connections: host all all ::1/128 md5

Esto se realizará para todas las maquinas donde se desea replicar.

Page 18: Postgre sql y_replicacion_slony_p

16

5- Crear un script con el bloc de notas para el nodo maestro y lo

llamaremos Maestro.txt:

cluster name = slony_MINI_AGENDA;

node 1 admin conninfo = 'dbname = MINI_AGENDA host = 10.0.10.2 user

= postgres password = admin';

node 2 admin conninfo = 'dbname = MINI_AGENDA host = 10.0.10.3 user

= postgres password = admin';

init cluster (id=1, comment = 'nodo maestro');

create set (id=1, origin=1, comment= 'aqui van todas mis tablas');

set add table (set id=1, origin=1, id=1, fully qualified name =

'public.Contacto', comment= 'mi tabla contacto');

set add table (set id=1, origin=1, id=1, fully qualified name =

'public.Telefono', comment= 'mi tabla telefono');

store node (id = 2, comment = 'nodo esclavo', EVENT NODE = 1);

store path (server = 1, client = 2, conninfo = 'dbname = MINI_AGENDA host

= 10.0.10.2 user = postgres password = admin');

store path (server = 2, client = 1, conninfo = 'dbname = MINI_AGENDA host

= 10.0.10.3 user = postgres password = admin');

store listen (origin = 1, provider = 1, receiver = 2);

store listen (origin = 2, provider= 2, receiver = 1);

Este archive debera guardarce en la siguiente ubicacion C:\Archivos de

Programas\PostgreSQL\8.4\bin\

6- de la misma manera crearemos un script llamado Suscriptor.txt para el

nodo esclavo, este será guardado en C:\Archivos de

Programas\PostgreSQL\8.4\bin\ pero del nodo esclavo.

Page 19: Postgre sql y_replicacion_slony_p

17

cluster name = slony_MINI_AGENDA;

node 1 admin conninfo = 'dbname= MINI_AGENDA host = 10.0.10.2 user

= postgres password = admin';

node 2 admin conninfo = 'dbname= MINI_AGENDA host =10.0.10.3 user =

postgres password = admin';

subscribe set (id = 1, provider = 1, receiver = 2, forward = yes);

8- Ejecutar el script en el nodo maestro.

8.1- abrir la consola de Windows y ejecutamos la siguiente línea:

C:\Archivos de Programas\PostgreSQL\8.4\bin\slonik Maestro.txt

9- Ejecutar el script en el nodo esclavo.

9.1- abrir la consola de Windows y ejecutamos la siguiente línea:

C:\Archivos de Programas\PostgreSQL\8.4\bin\slonik Suscriptor.txt

Page 20: Postgre sql y_replicacion_slony_p

18

10- Ejecutar siempre desde la consola de Windows en la maquina maestra

y esclava la siguiente instrucción:

C:\Archivos de Programas\PostgreSQL\8.4\bin\slon slony_MINI_AGENDA

“dbname = MINI_AGENDA user = postgres password = admin”

Page 21: Postgre sql y_replicacion_slony_p

19

Desde este momento la base de datos MINI_AGENDA estará replicando

cualquier modificación de sus tablas. OjO NO DEBEMOS CERRAR LA

CONSOLA EN NINGUN NODO.