Destripando el sistema de replicación de PostgreSQL 9.0



Documentos relacionados
Arquitectura de sistema de alta disponibilidad

Bases de Datos 2. Teórico

Programación SQL. Lucio Salgado Diciembre 2008

Soluciones de Replicación en PostgreSQL 9.1

COMO HACER BACKUP Y RESTAURAR ACTIVE DIRECTORY

PROYECTO INTEGRADO CLUSTER DE ALTA DISPONIBILIDAD CON HAPROXY Y KEEPALIVED. Antonio Madrena Lucenilla 21 de Diciembre de 2012 I.E.S.

1. INTRODUCCIÓN 2 2. EVERDRIVE LITE 3 3. SINCRONIZADOR DE EVERDRIVE 4 4. VISTA GENERAL DE LAS OPCIONES DE LA APLICACIÓN 5

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

18 y 19 Sistemas de Archivos Distribuidos y Tarea 05

CITRIX Citrix Application Streaming

LOG SHIPPING AND DATABASE MIRROR

Firebird 2.5 SuperServer, ClassicServer o SuperClassic?

OCFS (Oracle Cluster File System)

Instructivo para la sincronización de servidores Intellect

SISTEMAS DE ARCHIVOS DISTRIBUIDOS

Sitios remotos. Configurar un Sitio Remoto

Manual De Instalación MySQl 5.1 MANUAL DE INSTALACIÓN Y CONFIGURACIÓN DE MYSQL

Enlaces relacionados:

DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.

DBSURE. Disponemos de una copia de la base de datos de forma remota, que podemos contabilizar como segundo juego de copias.

Asignación de Procesadores

COPIAS DE SEGURIDAD CON COBIAN BACKUP INSTALACIÓN Y CONFIGURACIÓN

Sistemas de Operación II

Servidor DNS en Centos. Programa Gestión de Redes de Datos. Ficha Aprendiz Gustavo Medina Fernando Patiño Luis F.

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

ACCESS CONTROL. Aplicación para control y gestión de presencia. (Versión. BASIC) 1 Introducción. 2 Activación del programa

Cuestionario: Programación en C y máscaras (II)

Estructura de una BD Oracle. datafiles redo log controlfiles tablespace objetos Estructura lógica. Tablespaces tablespace SYSTEM

Toda base de datos relacional se basa en dos objetos

Manual de Instalación y Uso del Programa Dropbox

SUBIR UNA PÁGINA WEB A UN SERVIDOR GRATUITO DE HOSTING

Sistemas de archivos distribuidos. Alvaro Ospina Sanjuan

BASES DE DATOS AVANZADAS Transacciones en MYSQL

Petabytes de información: Repensando el modelamiento de base de datos. Ernesto Quiñones Azcárate Presidencia Apesol

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Familia de Windows Server 2003

Cómo crear una copia de seguridad del contenido de Outlook. Service Desk

Tutorial: Primeros Pasos con Subversion

Soporte y mantenimiento de base de datos y aplicativos

Su Solicitud del Mercado de Seguros: Comprobación de identidad (ID) e inconsistencias en la información

Redes de área local: Aplicaciones y servicios WINDOWS

Procedimientos iniciales

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

Sintaxis: CURSOR nombre_cursor[(param1 [IN] tipo1,... )] IS consulta ;

Curso de PHP con MySQL Gratis

HP Backup and Recovery Manager

Apuntes Recuperación ante Fallas - Logging

Manual de Instalación. Sistema FECU S.A.

MANUAL COPIAS DE SEGURIDAD

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

Actividad 2: Configurar e Instalar un Sistema Operativo virtual

Ministerio de Educación,Cultura y Deporte. Aulas en Red. Windows. Módulo 2: Servicios Básicos. DNS

INSTALACION Y CONFIGURACION DE SQL SERVER MANAGEMENT (EXPRESS) 2008

Backup & Recovery Oracle 9i. Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada.

Mini-guía: Gestión Backup

RAID 0, 1 y 5. RAID 0 (Data Striping)

INSTALACIÓN DE SIESTTA 2.0 EN UN HOSTING (Ejemplo para Guebs.com)

15 CORREO WEB CORREO WEB

General Parallel File System

QUÉ ES UNA BASE DE DATOS Y CUÁLES SON LOS PRINCIPALES TIPOS? EJEMPLOS: MYSQL, SQLSERVER, ORACLE, POSTGRESQL, INFORMIX (DV00204A)

PLATAFORMA SAP HANA Diez preguntas principales al elegir una base de datos in-memory. Empiece aquí

Decimocuartas Jornadas en Estadística e Informática. Ricardo Vergara Argudo ricardo.vergara@sasf.net

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Migrando WSS 2.0 a WSS 3.0

Manual de iniciación a

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

Qué necesito saber para tener mi sitio web en Internet?

Microsoft Dynamics. Migración de FRx 6.7 a Management Reporter for Microsoft Dynamics ERP

Estrategia de Backup para los Sistemas SAP R/3 GOBERNACIÓN DE CUNDINAMARCA

Guía de uso del Cloud Datacenter de acens

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

Conexión a red LAN con servidor DHCP

How to Crear Servidor Samba

MANUAL DE CREACIÓN DE CARPETAS PARA ACCESO POR FTP DE CLIENTES EN UN NAS

12 Minería de Datos Reglas de asociación.

Transacciones y bloqueos en SQL-Server

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Volumen. Jun HELPPEOPLE SCAN CLOUD Manual de Usuario de la Versión v s23. Elaborado por: Investigación y Desarrollo Helppeople Software

INSTALAR UBUNTU DESDE WINDOWS

III. ADMINISTRACIÓN DE ORACLE.

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Procedimientos iniciales Instalar, conectar y utilizar su dispositivo Intelligent NAS

Instala y configura un servidor SSH/SFTP. Transferir ficheros a dicho servidor con un cliente SFTP y SCP.

Configuración de DNS seguros

Servidor. Comenzaremos por confirmar que el servicio NFS esta instalado y ejecutandose desde la terminal, escribiremos lo siguiente: #rpm -q nfs-utils

Sven Ilius

Introducción a las redes de computadores

GVisualPDA Módulo de Almacén

CVS Concurrent Versions System Manual de Usuario

Ficheros de configuración de Nagios (ejemplo con nrpe y snmp)

En los últimos años, se ha presentado una enorme demanda por servicios portátiles,

Documento de trabajo Fundació Antoni Tapies

6.0 Funcionalidades Adicionales

QUÉ SISTEMAS OPERATIVOS SOPORTA EL SERVICIO SEGURIDAD MOVISTAR?

Sistemas Operativos. Curso 2016 Procesos

Transcripción:

Destripando el sistema de replicación de PostgreSQL 9.0 Ernesto Quiñones A. - CTO

Advertencia! Esta charla es para explicar como funciona por dentro el sistema de replicación de PostgreSQL 9.0 no para enseñar a instalar un sistema de replicación. Porque? Lo otro lo pueden aprender leyendo el manual.

Que es un sistema de replicación de base de datos? En simple: es mantener una 2da base de datos alterna con la data idéntica a la principal.

Porque debería tener un sistema de replicación para mi dbms? Para tener un sistema tolerable a fallas. Para balancear la carga de trabajo en diversos servidores. Para aplicaciones de alto consumo en consultas (B.I.) Para tener un ambiente de pruebas o desarrollo lo más parecido al ambiente de producción. Muchas otras que se puedan imaginar..

OK Por donde empezamos?

Características de la replicación interna de PgSQL 9.0 Es Streaming Replication Hot Standby No requiere hardware especial No requiere de servidores/servicios especiales No sobrecarga el servidor principal No requiere de un sistema de resolución de conflictos (al menos no adicionales al que ya implementa la base de datos) Si se cayera la replicación al menos tendré acceso de lectura Point-In-Time Recovery, es decir permite recuperar la data al tiempo pasado más cercano donde esta se encuentre bien. Usa WAL como método de cache, esta técnica permite asegurar que solo las operaciones bien realizadas actualicen la data (atomicidad y durabilidad).

Qué no hay? Múltiples servidores maestros/principales Asegurar que ante una falla el servidor principal nunca va a perder la data Controlar la replicación a nivel de tablas

Como funciona? En simple es: Servidor primario Servidor secundario pg_xlog/ WAL Data Conexión de red Traspasando datos pg_xlog/ WAL Data

El WAL es... Básicamente es un buffer donde se llevan a cabo las operaciones a la data y una vez terminada se pasan al almacenamiento de datos principal, si algo pasara entonces el área de datos permanecerá intacto solo se perderá lo que esta en el WAL. WAL genera segmentos de data de 16mb (configurable) en archivos físicos que tiene páginas de datos de 8kb (configurable).

El WAL es... typedef struct XLogRecord { pg_crc32 xl_crc; /* CRC for this record */ XLogRecPtr xl_prev; /* ptr to previous record in log */ TransactionId xl_xid; /* xact id */ uint32 xl_tot_len; /* total len of entire record */ uint32 xl_len; /* total len of rmgr data */ uint8 xl_info; /* flag bits, see below */ RmgrId xl_rmid; /* resource manager for this record */ } XLogRecord; typedef struct XLogRecData { char *data; /* start of rmgr data to include */ uint32 len; /* length of rmgr data to include */ Buffer buffer; /* buffer associated with data, if any */ bool buffer_std; /* buffer has standard pd_lower/pd_upper */ struct XLogRecData *next; /* next struct in chain, or NULL */ } XLogRecData; typedef struct CheckpointStatsData { TimestampTz ckpt_start_t; /* start of checkpoint */ TimestampTz ckpt_write_t; /* start of flushing buffers */ TimestampTz ckpt_sync_t; /* start of fsyncs */ TimestampTz ckpt_sync_end_t; /* end of fsyncs */ TimestampTz ckpt_end_t; /* end of checkpoint */ int ckpt_bufs_written; /* # of buffers written */ int ckpt_segs_added; /* # of new xlog segments created */ int ckpt_segs_removed; /* # of xlog segments deleted */ int ckpt_segs_recycled; /* # of xlog segments recycled */ } CheckpointStatsData;

El WAL es... Una ventaja del WAL es que puede residir en cualquier directorio y podemos hacer un enlace simbólico al directorio donde debería residir. En caso de que suceda un problema el WAL puede retroceder hacia el pasado hasta el último momento en que todo estuvo ok.

El WAL es... WAL maneja varios niveles para especificar que tanto deseo almacenar en este buffer en el nivel mínimo solo contiene información para recuperar una db en caso de paradas abruptas del servicio. Para realizar la replicación requerimos aumentar el nivel de WAL para reconstruir toda la data de una db.

El primer paso: indicar donde copiaremos el WAL En los archivos de configuración debemos indicar donde vamos a duplicar nuestros WAL files tomaremos en cuenta que debe existir una comunicación en ese file system entre los 2 servidores. Se puede usar NFS para ello, quizás (aún no lo he probado) podría usarse SSHFS como una forma más sencilla. Para asegurar que se copiarán todas las transacciones haremos que se mantenga un buen numero de segmentos WAL historicamente, pasar data por red tiene una demora importante que debemos tener en cuenta.

El primer paso: indicar donde copiaremos el WAL Servidor Principal NFS ó SSH Server Conexión LAN Servidor Replica NFS Client ó SSHFS client NFS: * Más complicado de configurar * Más rápido porque funciona a nivel de protocolo más bajo y coordinado con el kernel. * Menos seguro en la transmisión? SSHFS: * Más simple de configurar * Más lento que NFS, 1 a 2, porque funciona en capa más alta de tcp/ip y básicamente es un SCP. * Más seguro en la transmisión?

El segundo paso: reconstruir la imagen inicial de la db en el servidor de destino. La Herramienta más popular para esto es Rsync. Rsync trabaja en base a deltas binarios para determinar los cambios bit a bit entre 2 árboles de directorio y los files que este contiene. Se saca un checksum (md5) de los contenidos para verificar contra el espejo que es lo que ha cambiado. En los 2 anteriores pasos mencionados hasta el momento existen algunas ventajas, estamos limitados a replicar únicamente a un solo servidor, podemos realizar esto en varios y en cascada, otra es que podemos hacer esto casi en caliente.

Tercer paso: configurar el servidor réplica solo como servidor de consulta. Dado que las transacciones se manejarán en el servidor principal en las réplicas no podemos más que procesar consultas, ambos servicios no pueden escribir en la zona del WAL. Esto es un servidor HOTSTANDBY

HOTSTANDBY Hotstandby permite a PostgreSQL correr querys solo de consulta, de forma generica el estado Hotstandby permite recuperarse hasta un estado consistente a una db mientras esta sigue atendiendo conexiones. En la replica podemos ejecutar estos tipos de queries: Query access - SELECT, COPY TO Cursor commands - DECLARE, FETCH, CLOSE Parameters - SHOW, SET, RESET Transaction management commands BEGIN, END, ABORT, START TRANSACTION SAVEPOINT, RELEASE, ROLLBACK TO SAVEPOINT EXCEPTION blocks and other internal subtransactions LOCK TABLE, though only when explicitly in one of these modes: ACCESS SHARE, ROW SHARE or ROW EXCLUSIVE. Plans and resources - PREPARE, EXECUTE, DEALLOCATE, DISCARD Plugins and extensions - LOAD

HOTSTANDBY Uno podría iniciar una transacción pero el sistema nunca le asignará un espacio en el WAL por lo tanto nunca se grabará nada Los principales problemas que se pueden presentar son: Locks de Accesos Exclusivos en el servidor principal que bloquean tablas en la réplica. Borrar tablespace en el servidor principal que crean conflictos con queries que los usan en la réplica. Borrar una base de datos en el servidor principal y que en la replica existan conexiones a esta db. Correr un full vacuum mientras el WAL de la réplica aún tiene visible la fila. El mismo caso del anterior pero un query tiene acceso a las páginas a borrar.

HOTSTANDBY En la mayoría de los casos el problema genera un delay, este puede ser demasiado grande debido al control de concurrencias por ejemplo: * servidor réplica lanza un query con lock exclusivo sobre una tabla enorme que toma 15 * llega un drop table del servidor primario * servidor réplica sigue procesando el query * servidor primario sigue trabajando normalmente * servidor replica tiene paradas las transacciones replicadas del servidor primario hasta que no acabe el query en la réplica * termina el query en el servidor réplica y por fin aplica los otros cambios encolados * tenemos 15 minutos de retraso si es que no pasa de nuevo Para ello es deseable configurar el tiempo de espera para procesar el WAL y no tener este tipo de problemas, los queries que sobrepasen este tiempo serán abortados.

Qué falta? Pues nada, iniciar el servidor réplica, durante este inicio y mientras la db se sincroniza con el servidor principal las conexiones de clientes no estarán disponibles hasta que se llegue a un punto en el cual la información ya es consistente. Luego de este paso todo esta listo, tenemos un servidor de réplica corriendo :-)

Toda la documentación de esta exposición la pueden encontrar aquí : http://tinyurl.com/3wuugpq O en simple: http//www.eqsoft.net/wiki (sección Nuestras Ponencias)

Gracias por su tiempo.