PyReplica. Sistema de replicación simple para PostgreSQL programado en Python. Mariano Reingart (ArPUG/PyAr)



Documentos relacionados
PyReplica. Sistema de replicación simple para. programado en Python. Mariano Reingart

Clusterización de RDBMS. Rodrigo Henríquez M. Corporación Linux S.A.

Arquitectura de sistema de alta disponibilidad

ÍNDICE CAPÍTULO 1. TIPOS DE ALMACENAMIENTO DE LA INFORMACIÓN... 13

Los autores del presente documento lo ha publicado bajo las condiciones que especifica la licencia

DIPLOMADO DE INFRAESTRUCTURA DE SERVIDORES MICROSOFT

Alta Disponibilidad. con. Por: Ing. Dennis Cohn Muroy

Los autores del presente documento lo ha publicado bajo las condiciones que especifica la licencia

CURSO DE SQL SERVER 2005

Deudata es un paquete de software desarrollado por Sispyme,S.L. específicamente para resolver la problemática de Gestión de las Cuentas a Cobrar.

INFRAESTRUCTURA DE SERVIDORES MICROSOFT

Monitorización de sistemas y servicios

1

INTRODUCCION. entidades. Modelo lógico de la base de datos. Matricula. carne. codigo_curso. año semestre nota. propiedades

Ventajas, Características y Aplicaciones de los SGBD Distribuidos.

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

MS_20465 Designing Database Solutions for Microsoft SQL Server

CLOUD ENIAC BACKUP. Sus datos son importantes?

Fundamentos de Oracle

Servidores corporativos Linux

Windows Server 2003 (c) Francisco Charte Ojeda

Oracle 12c DISEÑO Y PROGRAMACIÓN

CURSOS Y DESCRIPCIÓN / ADMINISTRACIÓN DE BASE DE DATOS

INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE

Opciones de replicación y distribución de datos en Oracle RDBMS 9iR2, 10gR2 y 11gR1

Análisis de la competencia Retrospect y nuestra competencia

Análisis de la competencia Retrospect y nuestra competencia

Mínimo consumo de ancho de banda. Aplicable a cualquier tipo de fichero. Multiplataforma e Interplataforma

CI Politécnico Estella

Monitoreo de red. Inventario de hardware y software. Monitoreo actividad del usuario. Soporte a usuarios. Protección contra fuga de datos.

Dirigido a Profesionales y técnicos de informática que se inicien en el manejo de la base de datos Oracle 11g

ADMINISTRACIÓN DE BASES DE DATOS

ADMINISTRACIÓN Y PROGRAMACIÓN EN SIS- TEMAS DE PLANIFICACIÓN DE RECURSOS EMPRESARIALES Y DE GESTIÓN DE RELA- CIONES CON CLIENTES

Manual Exchange Online

General Parallel File System

ESPECIALISTA EN BASE DE DATOS

MySQL 5 (versiones 5.1 a 5.6) Guía de referencia del desarrollador

MODERNIZANDO PCN Y RECUPERACION DE DESASTRES UTILIZANDO VIRTUALIZACION Y LA NUBE

FAMILIA PROFESIONAL: Informática y Comunicación CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIMEDIA DAM 350 HORAS

Microsoft SQL Server 2005

SOLUCIONES PARA EMPRESA

INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE

Componentes de Integración entre Plataformas Información Detallada

Descripción. Este Software cumple los siguientes hitos:

Control del proceso de Render en una producción audiovisual

WINDOWS SERVER SERVICIOS DE RED Y DIRECTORIO ACTIVO

Presentación del Curso Virtual PROGRAMACIÓN WEB PHP CON MYSQL BÁSICO

Índice. agradecimientos...19

Herramienta de Gestión y Asistencia de Máquinas. Javier Silva Sanahuja

10775 Administering Microsoft SQL Server 2012 Databases

Exchange Server 2013 Configuración y gestión de su entorno de mensajería electrónica

We Care For Your Business Security

DISCAR S.A. - Córdoba (5004) - ArgentinaTel: (54 351)

ORACLE WORKFORCE DEVELOPMENT PROGRAM

índice CONVENCIONES USADAs...17

Exchange Server 2013 Preparación a la certificación MCSE Messaging - Examen

ÍNDICE. Introducción... Capítulo 1. Novedades, mejoras y requisitos para la instalación... 1

SMV. Superintendencia del Mercado de Valores

GCIC. grupo valora. Servicios tecnológicos de copias de seguridad

APLICACIONES DE MONITORIZACIÓN. Servicio de Informática

PostgreSQL Una Alternativa de DBMS Open Source. Humberto Espinoza Gerente de Soporte

TERCERIZACIÓN DE SERVICIOS DE TI. ANEXO 4 - Actividades y niveles de servicio definidos para Primer Nivel de Soporte en Seguridad

Mantenimiento de una base de datos de Microsoft SQL Server 2008 Introducción

Beneficios de la virtualización de VMware para la Universidad

ORACLE WORKFORCE DEVELOPMENT PROGRAM

PROGRAMA DEL CURSO ORACLE DATABASE 11G ADMINISTRATOR I

1º CFGS ASIR IMPLANTACIÓN DE SISTEMAS OPERATIVOS

D- Realiza un informe sobre los diferentes programas que existen en el mercado informático que permite crear imágenes de respaldo de tu equipo.

ADMINISTRACIÓN DE SERVIDORES SQL SERVER

/ FUNDAMENTOS DE DESARROLLO DE SOFTWARE

PROGRAMANDO UNA BASE DE DATOS PostgreSQL ADMINISTRACIÓN INTRODUCCIÓN (L32)

Curso Online de Oracle 10g

1. Instala servicios de configuración dinámica, describiendo sus características y aplicaciones.

ANEXO XII. Denominación: Administración y programación en sistemas de planificación de recursos empresariales y de gestión de relaciones con clientes.

Soporte y mantenimiento. Generalidades

Endian Firewall UTM Software Appliance

Virtualización. El valor de la Virtualización de Servidores en la PYME

REPOSITORIOS. Ing. Ismael Castañeda Fuentes, MSc Grupo de Investigación UNBD Universidad Nacional de Colombia Marzo de 2011

mope PROGRAMACIÓN DE SISTEMAS INFORMÁTICOS Página 0 PASEO GENERAL MARTINEZ CAMPOS MADRID info@mope.

CA ARCserve Backup r12.5 Preguntas frecuentes para partners

Un caso de éxito HOT.DBWAN

VERITAS Cluster Server 4.2 for Windows

Manual Avanzado Windows Server 2008

serra Access y SQL Server Qué es mejor en cada caso? Valentín Playá, Serra GTS 22 de enero de 2009 Bases de datos 1

PLIEGO DE PRESCRIPCIONES TÉCNICAS PARA LA CONTRATACIÓN DEL SUMINISTRO

Soporte y mantenimiento de base de datos y aplicativos

Servicios de impresión y de archivos (Windows 2008)

rg.o El l c i c c i l c o l o de d vi v d i a d a cm a l@ rza e de d u n u n si s s i t s e t ma m a de d in i f n or o ma m c a i c ó i n ó b

CONFIGURACIÓN Y DESARROLLO

BitDefender Soluciones Corporativas Windows

SQL Server 2012 Administración de una base de datos transaccional con SQL Server Management Studio

INFORME N GTI INFORME TÉCNICO PREVIO DE EVALUACIÓN DE SOFTWARE

Symantec Desktop and Laptop Option

SUBESTACIONES. Mando de control y Scada local

Transcripción:

PyReplica Sistema de replicación simple para PostgreSQL programado en Python Mariano Reingart (ArPUG/PyAr)

PostgreSQL El Sistema de Gestión de Bases de Datos de código abierto más potente del mercado Características Básicas: transacciones, integridad referencial, disparadores, vistas, bloqueos, etc. Características Avanzadas: concurrencia MVCC, tipos avanzados y del usuario, reglas, herencia, etc. Rendimiento: similar al resto de los motores Fiabilidad: versiones estables Soporte: comunidad, listas de correo, etc. Precio: $0.- (incluso usos comerciales) Licencia BSD

Replicación: Conceptos Maestro/Esclavo: Maestro: recibe consultas de lectura/escritura Esclavo: solo consultas de lectura Generalmente cambios asincrónicos (no simultaneo) Multi-Maestro: Solo Maestros Generalmente con sincronismo entre servidores Sin sincronismo: resolución o prevención de conflictos

Motivación / Objetivos PyReplica Fácil instalación (scripts, sin compilación) Fácil administración (sin comandos) Fácil adaptación (filtrar y/o transformar) Fácil mantenimiento (código KISS) Eficiencia (memoria, red, sin polling) Multiplataforma (Windows/Linux)

Alternativas: PgPool-II Intermediario ente PostgreSQL y las aplicaciones: Pool de conexiones Replicación Sincrónica Balanceo de Carga Consultas paralelas Posibles desventajas: Unico punto de falla No garantiza replicar funciones correctamente (SERIALs, randoms, CURRENT_TIMESTAMP, etc.) Soporte limitado de Autenticación, COPY, etc. Degenera o se detiene si se pierde el sinronismo

Alternativas: Slony-I Replicador Maestro a Múltiples Esclavos mediante disparadores: Diseñado para datacenters y sitios de backups (todos los nodos estan generalmente disponibles) Esquema avanzado de configuración "Pequeño Lenguaje" de administración Posibles desventajas: Instalación, configuración y administración compleja Solo un maestro (para escritura) Inviable para conexiones inestables o configuraciones variables

Alternativas: PgCluster / CyberCluster Replicador Múltiples Maestro y Sincrónico (servidor "especial"): Funcionalidad Avanzada Replica funciones, LOs, SERIALs, etc. Sincronismo de alto rendimiento Balance de carga y monitoreo Posibles desventajas: Requiere una versión "parcheada" de PostgreSQL Instalación y configuración compleja Puede requerir configuraciones avanzadas de hardware

Por que no usar PgPool SkyTools Slony-I PgReplicator PgCluster En General: Programados en C (compilación, bugs, etc.) Complejos (decenas de archivos y miles de líneas) Con juego de comandos propios (administración) Algnos no funcionan en Windows Inestables en condiciones extremas (pocos recursos) Conclusión: más difíciles de usar y adaptar Nota: Basado en experiencia y necesidades particulares

Características de PyReplica Asincrónico Maestro / Esclavo y Multimaestro limitado Replicación Condicional Detección de conflictos Notificaciones vía Email Monitoreo de las conexiones (KeepAlive) Conexiones directas a los backends Sin protocolos especiales (sql textual) Si herramientas externas (rsync) Protegido con transacciones en dos fases

Características de PyReplica Al igual que slony y otros replicadores basados en disparadores, PyReplica no soporta: Replicación de DDL automática (pero puede usarse para propagar órdenes DDL a varios servidores) Replicación de LOs (se puede usar ByteA) Replicación de secuencias Replicación sincrónica (simultanea) Resolución de conflictos (se pueden evitar con reglas/disparadores y/o detectarlos) Si soporta: Replicación de valores devueltos por funciones de fecha, aleatorias, secuencias, etc.

Usos de PyReplica Maestro Maestro Esclavo Escritura Esclavo Esclavo Maestro Escritura Lectura Maestro/Esclavo: esclavo de solo lectura Respaldo / Failover Balanceo de carga Datawarehouse / Consolidación Multimaestro: ambos son maestro y esclavo (lectura/escritura) Redundancia / Alta Disponibilidad Servidores Remotos (ej. ptos. venta) Servidores Móviles (ej. vendedores) Requiere particionado lógico para evitar conflictos de escritura

Programación de PyReplica Lenguaje Python: Código compacto, simple y claro Baterías incluidas: email, hilos, configuración, Simple de programar: 3 archivos fuente ppales., 500 líneas en total aprox. <150 líneas para el disparador y replicador Aprox. 1/8 del tamaño de Slony-I (disparador) Desarrollo en Windows y Linux Sin compilación Conjunto de pruebas automatizadas

Estructura de PyReplica py_log_trigger: Disparador de registro Detecta y almacena sentencias de replicación pyreplica.py: Cliente de replicación. Ejecuta las sentencias de replicación daemon.py: Demonio residente (configuracion, hilos, etc.)

Disparador de Registro py_log_replica Conversión Datos Python PostgreSQL Detecta cambios y genera SQL: Inserciones (INSERT) Modificaciones (UPDATE y SELECT) Eliminaciones (DELETE) Verifica condiciones Almacena el SQL en el registro (replica_log) Notifica a las replicas

Replicador (cliente y demonio) Se conecta a ambas bases de datos Escucha notificaciones Ejecuta las sentencias SQL registradas Maneja las transacciones Maneja los hilos (por cada maestro/esclavo) Envía email en caso de conflictos Registra archivos de logs para seguimiento

Instalación PyReplica (1/3) Dependencias: python, plpython, psycopg2 apt-get install postgresql-plpython-8.3 python2.5 python-psycopg2 Obtener/Instalar una copia del PyReplica svn co http://www.nsis.com.ar/svn/pyreplica /usr/local/pyreplica

Instalación PyReplica (2/3) Copiar base al esclavo (dump/restore) createdb somedb h remote pg_dump somedb psql somedb h remote Instalar Replicación en el Maestro: psql somedb -U someuser < master-install.sql

Instalación PyReplica (3/3) Configurar e Iniciar demonio: Copiar y editar archivo de configuración cp /usr/local/pyreplica/sample.conf /etc/pyreplica/somedb.conf vi /etc/pyreplica/somedb.conf Iniciar el demonio: /usr/local/pyreplica/daemon.py start

Archivo de Configuración [MAIN] NAME=mydb # master: DSN0=dbname=somedb user=someuser password=secret host=remote # slave: DSN1=dbname=somedb user=someuser password=secret host=localhost [SMTP] SERVER=somehost.somewhere.com START_SUBJECT=[PyReplica] Starting mydb replication STOP_SUBJECT=[PyReplica] Stopping mydb replication ERROR_SUBJECT=[PyReplica] Starting mydb replication (ERROR) WARNING_SUBJECT=[Replica] WARNING on mydb replication FROM_ADDR=no-reply@somewhere.com TO_ADDRS=dba@somewhere.com

Replicación Condicional py_log_filter: relname: nombre de la tabla a filtrar event: evento INSERT, DELETE o UPDATE condition: expresión python verdadero/falso Ej: diccionarios new y old para comparaciones new["campo1"].startswith("algo") old["campo2"]==123

Rendimiento Tiempos aproximados (100.000 iteraciones): INSERT INTO test (t,n,f,b) VALUES (random()::text, random(), now(), True); Sin disparador: 3,5 s Disparador de Slony-I (C): 8,8 s Disparador prueba (plsql): 11,5 s Disparador de PyReplica (plpythonu): 15,1 s

Temas pendientes Evitar o Resolver conflictos (multimaestro): Eliminar intervención manual Evitar bloqueos innecesarios Mejorar instalación: Paquetes (linux). Autoinstalables (windows) Soportar al demonio en windows: Corregir LISTEN en psycopg2 (o usar otro) Ajustar llamadas fork, signal, etc. Mejorar demonio y extender pruebas Optimizar con txid_snapshot (8.3+)

En testing: PyReplica-Admin Administrador "visual" de PyReplica: Facilita instalación automatizada Programado en Python y PythonCard (WX) Multiplataforma Windows, Linux, Mac Funcionalidad de Respaldo y Restauración Monitorización de estado Yanier (Cuba)

En desarrollo: ALERCE Replicador Sincrónico para Python: Conector compatible DbApi (simil Sequoia) Base de datos "Virtual" transparente para la aplicación Esquema Maestro - múltiples Esclavos Failover simple - cambiar a cualquier maestro (sincrónico!) Commit en dos fases para sincronizar bases pg_log_replica (disparador) para facilitar el failback (recuperación de esclavos caidos)

Gracias! Direcciones útiles: PyReplica: http://pgfoundry.org/projects/pyreplica/ ArPUG: PostgreSQL Argentina www.arpug.com.ar PyAr: Python Argentina www.python.org.ar Copyright 2009 Mariano Reingart - Licencia GPLv3.0

Propaganda... Los esperamos en PyCon 2009 Argentina: La primer conferencia en español del lenguaje Python y temas relacionado Septiembre 4 y 5 - Ciudad de Buenos Aires Abierto a las comunidades del software libre ar.pycon.org