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



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

Oracle 12c DISEÑO Y PROGRAMACIÓN

1

Microsoft SQL Server 2005

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

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

Fundamentos de Oracle

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

Índice. agradecimientos...19

CURSO DE SQL SERVER 2005

Escuela de Ingeniería Electrónica CAPITULO 11. Administración avanzada de los NOS

Arquitectura de sistema de alta disponibilidad

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

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

Pasos para replicación de una base de datos MySQL en VirtualBox MSC. Martín Contreras

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

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

Curso Online de Oracle 10g

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

DIPLOMADO DE INFRAESTRUCTURA DE SERVIDORES MICROSOFT

Falencias en cuanto a BDD

Curso Online de Microsoft

Programando con Pl/Python

INFRAESTRUCTURA DE SERVIDORES MICROSOFT

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

Directiva PCM/SG Directiva de seguridad ante la presencia de virus informático en la Presidencia del Consejo de Ministros

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

ESPECIALISTA EN BASE DE DATOS

CLOUD ENIAC BACKUP. Sus datos son importantes?

Módulos: Módulo 1. Hardware & Arquitectura de sistemas - 20 Horas

Conexión ODBC Visual Basic - MSQL. Cristian Vidal Silva

Guía práctica PHP 6. (c) Francisco Charte Ojeda

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

CAPITULO 8. Planeamiento, Arquitectura e Implementación

ADMINISTRACIÓN DE SERVIDORES SQL SERVER

XPERTO EN DISEÑO DE PÁGINAS WEB

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

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

optimización de niveles de servicio por medio del monitoreo de base de datos

Guía Taller I Conexión con la Base de Datos Introducción a PostgreSQL

Desarrollo Business Intelligence sobre tecnología Microsoft

Proceso de Replicación para el CMS Joomla! de la pagina WWW del INE

UNIDAD 1. Operatoria de teclados. Criterios de evaluación. UNIDAD 2. Informática básica. Criterios de evaluación 1. CRITERIOS DE EVALUACIÓN

TING! INFORMES Y SERVICIOS EXTRA FORMACIÓN TÉCNICA MADRID JULIO 2010

Proyecto de grado 6,5(, SISTEMA DE INFORMACIÓN PARA RESULTADOS DE EXÁMENES IMAGENOLÓGICOS. Introducción. Qué es Sirei?

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

Administración de Sistemas Operativos Fecha:

1. CONSIDERACIONES GENERALES

Software de Comunicaciones (2) Manual de Usuario Consola

2071 Querying Microsoft SQL Server 2000 with Transact- SQL

APACHE 2. Pablo Allietti Mérida Venezuela Octubre WALC Merida Venezuela

Módulo 7. Administración de MySQL

Replicación de PDC s y SLAPD

ORACLE WORKFORCE DEVELOPMENT PROGRAM

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

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

Nivel Básico/Intermedio. Instalar y Configurar SQL Server Diseñar una Base de Datos. Optimización de consultas

Características de Click & Decide

BitDefender Soluciones Corporativas Windows

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

Índice. iii. Objetivos... 24

8283: Administración y programación en Microsoft SQL Server 2012

Mast Backup Online First Class

/ FUNDAMENTOS DE DESARROLLO DE SOFTWARE

CAPITULO 9. Diseño de una Base de Datos Relacional Distribuida

PLAN DE TRABAJO CAPACITACION TECNICA ACADEMUSOFT

Manual de Usuario Servidor Cloud

Contenido QUÉ ES SERVIDOR CLOUD?... 3 ACCESO AL SERVIDOR CLOUD... 3 ADMINISTRACIÓN DEL SISTEMA... 6

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

Cómo abrir las bases de datos de Aspel-NOI 5.0?

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

1. Instala sistemas operativos en red describiendo sus características e interpretando la documentación técnica.

Programación páginas web. Servidor (PHP)

CI Politécnico Estella

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

Formato para prácticas de laboratorio

Replicación Postgresql 9.1 usando Slony I 2.2

Programación de Consultas SQL ADO.Net LDP / DUOC-AV

CL_50400 Designing, Optimizing, and Maintaining a Database Administrative Solution for Microsoft SQL Server 2008

Bases de datos. 76 Horas

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

PROGRAMAS DE ESTUDIO FORMATO 7 ADMINISTRACIÓN AVANZADA DE LINUX. Área de Formación Profesional

Cómo abrir la base de datos de Aspel-SAE 5.0?

Administración y programación de Bases de Datos con SQL Server 2005

I. E. S. Cristóbal de Monroy. DEPARTAMENTO: Informática. MATERIA: Sistemas Operativos en Red. NIVEL: 2º Sistemas Microinformáticos y Redes

Microsoft Office 2010 Illustrated. Tipos de Software

LABORATORIO 9. Replicación de base de datos en SQL Server

Curso de Programación PHP

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

Soporte y mantenimiento. Generalidades

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

Versión /10. Xerox ColorQube 9301/9302/9303 Servicios de Internet

Técnico Profesional en Administración de Bases de Datos con SQL Server 2008

Transcripción:

PyReplica Sistema de replicación simple para PostgreSQL programado en Python Mariano Reingart

Motivación / Objetivos 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)

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) Algunos no funcionan en Windows (o difícil instalación) 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 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

Usos Maestro Esclavo Maestro/Esclavo: esclavo de solo lectura Respaldo Balanceo Datawarehouse Esclavo Maestro Maestro Esclavo Multimaestro: ambos son maestro y esclavo (lectura/escritura) Servidores Remotos (ej. puntos venta) Servidores Móviles (ej. vendedores) Respaldo escritura lectura escritura Requiere particionado lógico para evitar conflictos de escritura

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.)

Instalación Dependencias: plpython, python y psycopg2 apt-get install postgresql-plpython-8.1 python2.4 python-psycopg2 Obtener/Instalar una copia del PyReplica svn co http://www.nsis.com.ar/svn/pyreplica /usr/local/pyreplica 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 Configurar e Iniciar demonio cp /usr/local/pyreplica/sample.conf /etc/pyreplica/somedb.conf vi /etc/pyreplica/somedb.conf /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

Programación Lenguaje Python: Código compacto, simple y claro Baterías incluidas: email, webserver, 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

Disparador de Registro Conversión Datos Python PostgreSQL Detecta cambios y genera SQL: Inserciones (INSERT) Modificaciones (UPDATE y SELECT) Eliminaciones (DELETE) 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

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 bloqueos/intervención manual al producirse un error Modo sincrónico (After Triggers sin demonio?) Mejorar instalación: Paquetes (linux). Autoinstalables (windows). Mac? Soportar al demonio en windows: Corregir LISTEN en psycopg2 (o usar otro driver) Ajustar llamadas fork, signal, etc. (demonioservicio) Mejorar demonio y extender pruebas Futuro (8.3+): usar txid_current_snapshot() Agradecimiento a Marko Kreen (skytools) por este último consejo y haber revisado las primeras versiones y comentado sus errores

Ejemplos y Preguntas