Your SlideShare is downloading. ×
Postgre sql y_replicacion_slony_p
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Postgre sql y_replicacion_slony_p

2,903
views

Published on

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,903
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
178
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. UNIVERSIDAD DE EL SALVADOR FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE DEPTO. DE INGENIERIA Y ARQUITECTURAREPLICACION 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
  • 2. Índice generalContenido pagSobre PostgreSQL .......................................................................................................................... 1Características de PostgreSQL ........................................................................................................ 1Herramientas graficas de administración de bases de datos en PostgreSQL................................... 1La replicación de datos................................................................................................................... 2Herramientas de replicación para PostgreSQL ................................................................................ 2Sobre Slony-I .................................................................................................................................. 3Aspectos importantes antes de poner en marcha una replicación .................................................. 4Replicando una base de datos de PostgreSQL con Slony-I en Windows .......................................... 5
  • 3. POSTGRESQL Y REPLICACIONSobre PostgreSQLPostgreSQL es una potente herramienta de gestión de bases de datosrelacional y orientada a objetos (SGBDOO en sus siglas en ingles).PostgreSQL se distribuye bajo licencia BSD (Berkeley SoftwareDistribution). Es una licencia de software libre permisiva, lo que permite suuso, redistribución, modificación con la única restricción de mantener elcopyright del software a sus autores.Características de PostgreSQLEntre 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 enPostgreSQL.Existen varias herramientas que se pueden utilizar para la manipulaciónde bases de datos en PostgreSQL, dichas herramientas nos permiten ver ytrabajar con casi todos los objetos de la base de datos, examinar suspropiedades o realizar tareas administrativas. Entre estas herramientaspodemos mencionar:  PHPPGadmin: esta herramienta está basada en interfaz web. 1
  • 4.  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 datosLa replicación es una técnica que se basa en mantener objetos de lasbases de datos en múltiples ubicaciones. De esta forma se puede teneruna réplica exacta o parcial de la base de datos que puede usarse parauna restauración de emergencia o bien para realizar consultas sobre ella yaligerar la carga del servidor principal.La replicación es una buena alternativa para tener disponibilidad deinformación cuando un servidor se cae. La replicación no suplanta losbackup’s, sino, simplemente garantiza la operatividad.Existen algunos métodos de replicación entre los cuales se puedenmencionar:  Multimaestro  Maestro -esclavoMultimaestro: es un método de replicación de bases de datos que permiteque los datos sean almacenados por un grupo de computadoras y ademásestos datos pueden ser actualizados por cualquier nodo de este grupo. Coneste tipo de replicación todos los nodos participantes son delectura/escritura.Maestro-esclavo: con este método de replicación los datos también sonalmacenados en un grupo de computadoras con la diferencia de que aquísolamente el nodo maestro es de lectura/escritura y el esclavo solo delectura.Herramientas de replicación para PostgreSQL 2
  • 5. Hay varias herramientas que actúan como middleware (intermediario)entre PostgreSQL y la replicación de datos, entre las que se puedendestacar:  Slony-I  Rubyrep  PGpool  Hot Standby / Streaming ReplicationDe estas herramientas se elegirá la que más se ajustes a las necesidadesque se tengan, en nuestro caso hemos elegido Slony-I y será en la cualprofundizaremos nuestro estudio.SLONY-ISobre Slony-ISlony-I es un sistema de replicación asíncrono para PostgreSQL de unabase de datos maestra hacia una o múltiples bases de datos hijas. Slony-Irealiza las actualizaciones a través de disparadores o triggers por lo queactualmente solo puede realizar replicación de tablas y secuencias.Replicación asíncronaQue una replicación sea asíncrona significa que cuando una transacciónpara la base de datos es enviada al servidor maestro no se garantiza queesté disponible para los nodos esclavos.TriggersUn trigger (o disparador) en una Base de datos, es un procedimiento quese ejecuta cuando se cumple una condición establecida al realizar unaoperación. Dependiendo de la base de datos, los triggers pueden ser deinserción (INSERT), actualización (UPDATE) o borrado (DELETE). Algunasbases 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. 3
  • 6. De lo contrario Slony-I es una opción para tomar muy en cuenta al quererrealizar una replicación.Aspectos importantes antes de poner en marcha una replicaciónAntes de poner en marcha una replicación usando Slony-I es importantetener claro algunos conceptos como:  Clúster  Nodo  Set de replicación  Origen, Proveedores y Suscriptores  Demonio slon  Comando slonikCluster: conjunto de bases de datos PostgreSQL dentro de las cualesocurre la replicación.Nodo: un nodo es una base de datos que participa en el proceso dereplicación.Set de replicación: Es un conjunto de tablas y secuencias que sereplicaran. Nótese que no se replican todas las tablas, sino que se tienenque especificar explícitamente.Origen, proveedores y suscriptores: Cada set de replicación tiene unnodo de origen, que es la base de donde se obtiene información. Los nodosque reciben la información se denominan nodos suscriptores. Dichosnodos suscriptores se pueden convertir en proveedores si a su vez tienenotros nodos suscriptores.Demonios slon: Para cada nodo en el clúster, existe un proceso slon queadministra la actividad de replicación para ese nodo.Comandos slonik: es un pequeño intérprete de comandos que incluyecomandos 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 4
  • 7.  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 enWindowsRequisitos:Para la realización de nuestra replicación es necesario tener instaladas lassiguientes herramientas:  PostgreSQL 8.4 o compatible  PGadmin III  Slony-I 2.0.4Descripción de los elementos:PostgreSQL 8.4: es el gestor de base de datos, el cual puede ser instaladodesde el gestor de paquetes de Linux o se puede descargar desde su sitiooficial (http://www.postgresql.org/ftp/binary) tanto para Linux como paraWindows.PGadmin III: como se dijo anteriormente existen varias herramientas parala manipulación de bases de datos PostgreSQL entre los que estaPGadmin.PGadmin III es una interfaz gráfica que soporta todas las características dePostgreSQL y facilita enormemente la administración. La aplicacióntambién incluye un editor SQL con resaltado de sintaxis, un editor decó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 disponibleen los repositorios de Linux y se puede instalar de esa forma odescargá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 quepermite la replicación en PostgreSQL, su instalación puede ser tambiéndesde el gestor de paquetes en Linux o utilizando el Stack Builder que esuna herramienta que se instala cuando instalamos el gestor PostgreSQLen windows y sirve para instalar complementos para dicho gestor. 5
  • 8. Para instalar Slony-I desde el Stack Builder debemos seguir los siguientespasos: 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. 6
  • 9. 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. 7
  • 10. 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 paraPostgreSQL 8.4CASO PRACTICO DE REPLICACION.Ya teniendo todo lo necesario pasamos a lo que es la replicación en sí. Acontinuación se muestra como realizar dicha replicación de tipo maestro-esclavo en Windows 7 con los detalles mostrados en la imagen. 8
  • 11. 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 datos1.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: 9
  • 12. 1.3- Esta configuración debe de estar en ambos nodosPaso 2: Configurar el Slony-I2.1- Ya teniendo creada la base de datos, el siguiente paso es agregardesde el PGadmin la ruta a Slony-I para ello nos vamos aFileOpciones slony_I pathc:program Files PostgreSQL8.4recordemos que esta es la ruta donde se instalo Slony-I por lo que siespecificamos otro directorio al instalarlo esta ruta variaría. 10
  • 13. 2.2- Ademas de agregar la ruta anterior, debemos de verificar quetengamos disponible el lenguaje plpgsql.Si no esta disponible debemos agregarlo de la siguiente manera 11
  • 14. FileOptionsdisplay y chequiamos LenguagesLuego clic derecho sobre lenguajenuevo lenguajeplpgsql 12
  • 15. Paso 3: configurar firewall de windows3.1- Crear una nueva regla de entrada para que nuestro firewall permita laconexión a través del puerto 5432. Para ello nos dirigimos a Panel decontrolSistema y seguridadfirewall de Windowsconfiguraciónavanzadareglas de entradanueva reglapuerto.Al hacer clic en siguiente nos aparece la ventana para especificar puerto yprotocolo para el caso elegimos TCPPuertos locales especificos. Elpuerto en este caso es el de postgeSQL o sea 5432 13
  • 16. Siguiente y permitir conexiónDespués seleccionamos dominio y privado 14
  • 17. Luego le colocamos un nombre y finalizarListo ya tenemos creada nuestra entrada para permitir conexiones remotasen Windows.Paso 4: configurar el archivo pg_hba.conf4.1- abrir el archivo C:Program Files PostgreSQL8.4datapg_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 md5Esto se realizará para todas las maquinas donde se desea replicar. 15
  • 18. 5- Crear un script con el bloc de notas para el nodo maestro y lollamaremos 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 deProgramasPostgreSQL8.4bin6- de la misma manera crearemos un script llamado Suscriptor.txt para elnodo esclavo, este será guardado en C:Archivos deProgramasPostgreSQL8.4bin pero del nodo esclavo. 16
  • 19. 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 ProgramasPostgreSQL8.4binslonik Maestro.txt9- Ejecutar el script en el nodo esclavo.9.1- abrir la consola de Windows y ejecutamos la siguiente línea:C:Archivos de ProgramasPostgreSQL8.4binslonik Suscriptor.txt 17
  • 20. 10- Ejecutar siempre desde la consola de Windows en la maquina maestray esclava la siguiente instrucción:C:Archivos de ProgramasPostgreSQL8.4binslon slony_MINI_AGENDA“dbname = MINI_AGENDA user = postgres password = admin” 18
  • 21. Desde este momento la base de datos MINI_AGENDA estará replicandocualquier modificación de sus tablas. OjO NO DEBEMOS CERRAR LACONSOLA EN NINGUN NODO. 19