Presentacion Alta Disponibilidad Postgres
-
Upload
ramon-felix -
Category
Documents
-
view
248 -
download
3
Transcript of Presentacion Alta Disponibilidad Postgres
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 1/54
PRESIDENCIA DE LA REPÚBLICA DEL ECUADORPRESIDENCIA DE LA REPÚBLICA DEL ECUADOR
POSTGRESQL Y SISTEMAS DE ALTAPOSTGRESQL Y SISTEMAS DE ALTA
DISPONIBILIDADDISPONIBILIDAD
SUBSECRETARÍA DE TECNOLOGÍAS DE LA
INFORMACIÓN
OCTUBRE 2011
Ing. Marcelo Silva
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 2/54
CONTENIDOCONTENIDO
Alta Disponibilidad.
Alta Disponibilidad : Comparación de diferentessoluciones.
QUIPUX como sistema de Alta Disponibilidad.QUIPUX como sistema de Alta Disponibilidad –
Siguiente Paso.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 3/54
ALTA DISPONIBILIDADALTA DISPONIBILIDAD
Un grupo de computadores independientes que
trabajan conjuntamente para incrementar ladisponibilidad de diversas aplicaciones y servicios.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 4/54
ALTA DISPONIBILIDADALTA DISPONIBILIDAD
La alta disponibilidad en definitiva busca contar con unambiente tolerante a fallos, un sistema capaz de
encubrir los fallos que se producen en él para mantener una prestación de servicio continua.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 5/54
ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN
DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES
1.- Disco Compartido .-Una sola copia de la base de datos.Un arreglo de discos compartido por múltiples
servidores.Si el servidor principal falla, se puede subir el servidor
de respaldo en poco tiempo sin perdida de datos.Una significante limitación es que si el arreglo de
disco compartido falla ambos el servidor principal y elde respaldo quedan no funcionales.Este método puede ser usado implementando un
servidor GFS, XFS, OFS.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 6/54
ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN
DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES
2.- Replicación del sistema de archivos .-Todos los cambios de un sistema de archivos son
replicados a otro sistema de archivos residente en
otra computadora.La única restricción de este método es que como el
servidor principal y el de respaldo son idénticos siexiste corrupción a nivel de datos, ambos ambientestendrán este inconveniente.
DRBD es una popular aplicación para replicación desistemas de archivos.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 7/54
ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN
DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES
3.- Warm y Hot Standby Usando PITR .-Replicación por medio de los archivos wall.Si el servidor principal falla, el servidor de respaldo
contiene la mayoría de los datos del servidor principaly fácilmente puede ser colocado como servidor principal.
Este es un método asíncrono y solo puede ser
utilizado sobre toda la base de datos.Ejemplo: walmgr (wal manager)
skytools.projects.postgresql.org/doc/walmgr.html
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 8/54
ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN
DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES
4.-Replicación Maestro-Esclavo usando triggersEl servidor maestro asincrónicamente envía los
cambios de datos al servidor esclavo.
El servidor esclavo puede ser utilizado paraconsultas.
Este método es ideal para consultas para un almacénde datos.
Slony-I, londiste Skytools son herramientas que usaneste tipo de solución.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 9/54
ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN
DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES
5.-Replicación Midleware .-Un programa intercepta cada consulta SQL y envía
esta a uno o más servidores.
Cada servidor opera independientemente, consultasde lectura / escritura pueden ser enviadas a todoslos servidores, existe balanceo de carga a nivel deconsultas.
Funciones como random(), current_timestamp ysecuencias pueden devolver diferentes valores encada servidor.
Pgpool-II y Sequoia son ejemplos de este tipo dereplicación.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 10/54
ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN
DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES
6.-Replicación asincrónica Maestro-Maestro .-Para servidores que no están regularmente
conectados, como laptops o servidores remotos, si se
guarda la consistencia de los datos estos pueden ser actualizados.Cada servidor trabaja independientemente y
periódicamente esta comunicándose con otrosservidores para identificar conflictos detransacciones, estos conflictos pueden ser resueltospor usuarios o reglas de resolución de conflictos
Bucardo es un ejemplo de este tipo de replicación.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 11/54
ALTA DISPONIBILIDAD : COMPARACIÓNALTA DISPONIBILIDAD : COMPARACIÓN
DIFERENTES SOLUCIONESDIFERENTES SOLUCIONES
7.-Replicación sincrónica Maestro-Maestro .-Cada servidor puede aceptar peticiones de escritura,
y los datos modificados son transmitidos del servidor
original a cada uno de los servidores.Escrituras pesadas pueden causar constantes
bloqueos degradando el rendimiento.Peticiones de lectura pueden ser enviadas a
cualquier servidor.Ejemplo: PyReplica
(http://pgfoundry.org/projects/pyreplica)
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 12/54
CUADRO COMPARATIVOCUADRO COMPARATIVO
Funcionalidad
NA S DRB D P ITR S lony P gpool-II B uc ardo
M étodo de Com unicac ión W A L S Q L
X X X X X XX X X
X X X
X X X X
X X X X
H o t o n ly X X X X
Granularidad Por Tabla X X X
X X X X X
DiscoCompartido
Replicacióndel sistema de archivos
Warm y HotStandbyUsando PITR
ReplicacióMaestro-Esclavousando
tri ers
ReplicaciónMidleware
Replicaciónasincrónica Maestro-Maestro
Replicaciónsincrónica Maestro-Maestro
Implementación MásUti l izada
DiscoCompart ido
Bloques dedisco
Registros detablas
Registros detablas
Registros detablas ybloqueos deregistros
Hardware no especialrequeridoPermite múlt iples servidoresmaestros
No hay sobrecarga delservidor maestro
Sin espera para múlt iplesservidores
Fal la del maestro sin pérdidade datos
Servidores en espera soloaceptan consultas de lectura
Necesaria la resolución de
confl ictos
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 13/54
QUIPUX COMO SISTEMA DE ALTAQUIPUX COMO SISTEMA DE ALTA
DISPONIBILIDADDISPONIBILIDAD
5.000 Usuarios concurrentes.23.000 documentos diarios generados (Promedio).4.348.397 documentos generados en los últimos 13
meses.681.657 documentos firmados electrónicamente en
los últimos 13 meses.88 instituciones usando el sistema concurrentemente.
45.958 usuarios activos.Servicio 7 x 24.
Nota : Datos del 30 de Septiembre de 2011
QUIPUX COMO SISTEMA DE ALTAQUIPUX COMO SISTEMA DE ALTA
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 14/54
QUIPUX COMO SISTEMA DE ALTAQUIPUX COMO SISTEMA DE ALTA
DISPONIBILIDADDISPONIBILIDAD
QUIPUX COMO SISTEMA DE ALTA DISPONIBILIDADQUIPUX COMO SISTEMA DE ALTA DISPONIBILIDAD
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 15/54
QUIPUX COMO SISTEMA DE ALTA DISPONIBILIDADQUIPUX COMO SISTEMA DE ALTA DISPONIBILIDAD
SIGUIENTE PASOSIGUIENTE PASO
QUIPUX COMO SISTEMA DE ALTA DISPONIBILIDADQUIPUX COMO SISTEMA DE ALTA DISPONIBILIDAD
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 16/54
QUIPUX COMO SISTEMA DE ALTA DISPONIBILIDADQUIPUX COMO SISTEMA DE ALTA DISPONIBILIDAD
SIGUIENTE PASOSIGUIENTE PASO
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 17/54
REFERENCIAS BIBLIOGRÁFICASREFERENCIAS BIBLIOGRÁFICAS
Libro : The PostgreSQL 9.0 Reference ManualVolume 3: Server Administration Guide
///media/datos/MarioLopez/Subsecretaria/Cursos/Presentacion%20Postgres%20y%20alta%20disponibilidad/cluster-de-servidores-con-
postgresql.html
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 18/54
PREGUNTASPREGUNTAS
Gracias
Por: Ing. Mario López B.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 19/54
PRESIDENCIA DE LA REPÚBLICA DEL ECUADORPRESIDENCIA DE LA REPÚBLICA DEL ECUADOR
SKYTOOLS : PgQSKYTOOLS : PgQREPLICACIÓN CON LONDISTEREPLICACIÓN CON LONDISTE
Subsecretarí a de Tecnologí as de la Información
Abril 2011
Por: Ing. Mario López B.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 20/54
AGENDAAGENDA
PgQ
Londiste
Laboratorio de replicació
n PgQ Londiste con PostgreSQL
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 21/54
PgQ : QUÉ ESPgQ : QUÉ ES
UnaUna implementaciónimplementación de colasde colas sobresobre PostgreSQL conPostgreSQL con unauna interface de store proceduresinterface de store procedures
Eventos son generados por Productores y colocados en la colaEventos son generados por Productores y colocados en la cola
para poder ser procesados por los Consumidorespara poder ser procesados por los Consumidores
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 22/54
PgQ : PARA QUE SIRVEPgQ : PARA QUE SIRVE
Mensajerí aMensajerí a asincrónicaasincrónica
Procesamiento Por LotesProcesamiento Por Lotes
Replicaci ó n Repl icaci ó n
TransaccionesTransacciones DistribuidasDistribuidas
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 23/54
PgQ: CARACTERÍSTICASPgQ: CARACTERÍSTICAS
TRANSACCIONALTRANSACCIONAL . . EventosEventos sonson generadosgenerados transaccionalmente.transaccionalmente.
EFICIENTEEFICIENTE. Los eventos son procesados por lotes y es muy. Los eventos son procesados por lotes y es muy
liviano.liviano. FLEXIBLEFLEXIBLE. Sin l í mites en el número de Productores y. Sin l í mites en el número de Productores y
ConsumidoresConsumidores
CONFIABLECONFIABLE. Los eventos son almacenados en la base de datos. Los eventos son almacenados en la base de datos
PostgreSQLPostgreSQL FÁCIL DE USARFÁCIL DE USAR. Interface SQL simple, API's para diferentes. Interface SQL simple, API's para diferentes
lenguajeslenguajes
CÓDIGO ABIERTOCÓDIGO ABIERTO. No se requiere de licencia y los fuentes. No se requiere de licencia y los fuentesestán disponiblesestán disponibles
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 24/54
GLOSARIOGLOSARIO
EVENTO. EVENTO. PiezaPieza atómicaatómica dede datosdatos generadogenerado porpor unun ProductorProductor .. UnUneventoevento PgQ esPgQ es unun registroregistro dede unauna de las tablasde las tablas soportadassoportadas porpor la colala cola
LOTE DE EVENTOS.- PgQ esta diseñado para manejar deLOTE DE EVENTOS.- PgQ esta diseñado para manejar de
forma más eficiente gran cantidad de datos es por esto queforma más eficiente gran cantidad de datos es por esto queagrupa en lotes para que sean procesados los eventosagrupa en lotes para que sean procesados los eventos COLA.- Los eventos son almacenados en tablas diseñadasCOLA.- Los eventos son almacenados en tablas diseñadas
para manejar las colas . Varios Productores pueden escribir para manejar las colas . Varios Productores pueden escribir en la misma cola y varios Consumidores pueden leer de laen la misma cola y varios Consumidores pueden leer de lamisma cola. Los elementos son almacenados en la cola antesmisma cola. Los elementos son almacenados en la cola antesde poder ser consumidosde poder ser consumidos
PRODUCTOR.- Aplicaciones que colocan un evento en laPRODUCTOR.- Aplicaciones que colocan un evento en lacolacola
CONSUMIDOR.- Aplicaciones que leen eventos de una colaCONSUMIDOR.- Aplicaciones que leen eventos de una cola
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 25/54
PgQ : COLAPgQ : COLA
Esencialmente unEsencialmente un conjuntoconjunto de tablas ende tablas en unauna base debase de datosdatos PostgreSQLPostgreSQL
Por defecto maneja 3 tablas por colaPor defecto maneja 3 tablas por cola
Los eventos son descartados solo cuando todos losLos eventos son descartados solo cuando todos losConsumidores han procesado el eventoConsumidores han procesado el evento
Las colas son accesibles mediante un API a través de storeLas colas son accesibles mediante un API a través de storeproceduresprocedures
Se puede tener diferentes colas para una misma base de datosSe puede tener diferentes colas para una misma base de datos Cualquier número de Productores y cualquier número deCualquier número de Productores y cualquier número de
ConsumidoresConsumidores
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 26/54
PgQ : API PARA COLAPgQ : API PARA COLA
Creación y eliminaciónCreación y eliminación de colasde colas
pgq.create_queue(nombre_cola)pgq.create_queue(nombre_cola)
pgq.drop_queue(nombre_cola)pgq.drop_queue(nombre_cola)
Funciones de información de las colasFunciones de información de las colas
pgq.get_queue_info(nombre_cola)pgq.get_queue_info(nombre_cola)
pgq.get_consumer_info(nombre_cola)pgq.get_consumer_info(nombre_cola)
pgq.current_event_table(nombre_cola)pgq.current_event_table(nombre_cola)
Manejo de los ConsumidoresManejo de los Consumidores
pgq.register_consumer(qname, cname)pgq.register_consumer(qname, cname)
pgq.unregister_consumer(qname, cname)pgq.unregister_consumer(qname, cname)
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 27/54
PgQ : EVENTOPgQ : EVENTO
Un registroUn registro enen unauna tablatabla queque manejamaneja unauna colacola
Registros a ser procesadosRegistros a ser procesados
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 28/54
PgQ : LOTE DE EVENTOSPgQ : LOTE DE EVENTOS
Los eventos son agrupados en lotes para un procesamientoLos eventos son agrupados en lotes para un procesamientomás eficientemás eficiente
Los Consumidores obtienen eventos en lotesLos Consumidores obtienen eventos en lotes El tamaño del lote puede ser tuneado para la aplicaciónEl tamaño del lote puede ser tuneado para la aplicación
o topología de redo topología de red Lotes más pequeños podrían mejorar el procesamientoLotes más pequeños podrían mejorar el procesamiento Los lotes son preparados por un proceso separadoLos lotes son preparados por un proceso separado
llamado Ticker llamado Ticker
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 29/54
PgQ : TICKERPgQ : TICKER
Es un demonio queEs un demonio que periódicamenteperiódicamente crea ticks sobre la(s)crea ticks sobre la(s)cola(s). El Tick es esencialmente una posición en la secuenciacola(s). El Tick es esencialmente una posición en la secuenciade eventosde eventos
Un lote es formado de eventos que son encolados entreUn lote es formado de eventos que son encolados entredos ticksdos ticks
Sin Ticker no hay lotes de eventosSin Ticker no hay lotes de eventos Si se tiene una pausa muy extendida del ticker los lotesSi se tiene una pausa muy extendida del ticker los lotes
de eventos podrían ser muy grandes y losde eventos podrían ser muy grandes y losconsumidores no podrían procesar adecuadamente elconsumidores no podrían procesar adecuadamente ellote de eventos.lote de eventos.
Ticker esta envuelto en misceláneos como son elTicker esta envuelto en misceláneos como son elvacuum de las tablas pgq, calendarización de eventosvacuum de las tablas pgq, calendarización de eventos
encolados y la rotación de las tablas de las colasencolados y la rotación de las tablas de las colas
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 30/54
PgQ : CONSUMIDORPgQ : CONSUMIDOR
Se adhiere a la colaSe adhiere a la cola
El que obtiene eventos de la cola pidiendo un lote deEl que obtiene eventos de la cola pidiendo un lote deeventoseventos
Solo ve los eventosSolo ve los eventos que se han producido después deque se han producido después dela suscripciónla suscripción
Los eventos son vistos al menos una vez los eventos noLos eventos son vistos al menos una vez los eventos nose pierdense pierden
Se debe contar con algún tipo de seguimiento para queSe debe contar con algún tipo de seguimiento para queun evento solo sea utilizado una vez Skytools poseeun evento solo sea utilizado una vez Skytools poseealgunas herramientas para estoalgunas herramientas para esto
Si el evento no puede ser procesado inmediatamenteSi el evento no puede ser procesado inmediatamentepuede ser calendarizado para ser reprocesadopuede ser calendarizado para ser reprocesadoposteriormenteposteriormente
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 31/54
PgQ : ESTADOPgQ : ESTADO
Puede ser obtenida llamando a pgq.get_consumer_info()Puede ser obtenida llamando a pgq.get_consumer_info()
Se visualiza el informe de la cola, el nombre de losSe visualiza el informe de la cola, el nombre de losconsumidores, retrasos etcconsumidores, retrasos etc
Lag es el tiempo del último lote de eventos finalizadoLag es el tiempo del último lote de eventos finalizado Last seenes el tiempoLast seenes el tiempo transcurridotranscurrido en el que unen el que un
consumidor procesó el último lote de eventosconsumidor procesó el último lote de eventos
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 32/54
PgQ : PRODUCTORPgQ : PRODUCTOR
Cualquier cosa colocada en los eventos de las colasCualquier cosa colocada en los eventos de las colas
Configura el formato de carga de un evento acordadoConfigura el formato de carga de un evento acordadoentre el Productor y el Consumidor entre el Productor y el Consumidor
InterfazInterfaz básicabásica mediante un APImediante un APIpgq.insert_event(queue, ev_type, ev_data)pgq.insert_event(queue, ev_type, ev_data)
La replicación usa triggers para la generación de losLa replicación usa triggers para la generación de loseventoseventos
pgq.sqltriga(queue, options)pgq.sqltriga(queue, options)pgq.logutriga(queue, options)pgq.logutriga(queue, options)
Carga masiva es también posibleCarga masiva es también posible
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 33/54
SKYTOOLS 3 : NUEVASSKYTOOLS 3 : NUEVAS
CARACTERÍSTICASCARACTERÍSTICAS
Consumidores Colaborativos. Consumidores Colaborativos. Distribución de carga de unDistribución de carga de unConsumidor entre varios Sub ConsumidoresConsumidor entre varios Sub Consumidores
Soporta Cascada .-Soporta Cascada .- Una cola idéntica es mantenidaUna cola idéntica es mantenida
entre los nodos, los Consumidores puedenentre los nodos, los Consumidores pueden fácilmentefácilmente moverse en diferentes nodosmoverse en diferentes nodos
Los tickers de base de datos remplazados por un simpleLos tickers de base de datos remplazados por un simpledemonio pgqddemonio pgqd
Utilitario qadmin para manejar colas y ConsumidoresUtilitario qadmin para manejar colas y Consumidores
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 34/54
PgQ: CONSUMIDORES COLABORATIVOSPgQ: CONSUMIDORES COLABORATIVOS
Algunas ocasiones un solo Consumidor no satisface con el volumen de lotes deAlgunas ocasiones un solo Consumidor no satisface con el volumen de lotes deeventoseventos
Consumidores paralelos podría ayudar, pero necesitamos dividir la cargaConsumidores paralelos podría ayudar, pero necesitamos dividir la cargade trabajo para evitar tratar el mismo evento dos vecesde trabajo para evitar tratar el mismo evento dos veces
Entonces necesitamos que los Consumidores puedan trabajar de formaEntonces necesitamos que los Consumidores puedan trabajar de formacolaborativacolaborativa
Skytool 3 introduce los Sub Consumidores con este fin. Estos compartenSkytool 3 introduce los Sub Consumidores con este fin. Estos compartenla carga de trabajo de forma colaborativala carga de trabajo de forma colaborativa
Hay algunas diferencias en el manejo de registros y el procesamientoHay algunas diferencias en el manejo de registros y el procesamientopor lotes pero se parece bastante al de los Consumidores regularespor lotes pero se parece bastante al de los Consumidores regulares
pgq_coop.register_subconsumer(qname,cname,scname)pgq_coop.register_subconsumer(qname,cname,scname) pgq_coop.unregister_subconsumer(qname,cname,scname,mode)pgq_coop.unregister_subconsumer(qname,cname,scname,mode)
pgq_coop.next_batch(qname,cname,scname)pgq_coop.next_batch(qname,cname,scname)
pgq_coop.finish_batch(batch_id)pgq_coop.finish_batch(batch_id)
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 35/54
PgQ: CASCADAPgQ: CASCADA
Cascada es un conjunto de nodos de baseCascada es un conjunto de nodos de basede datos y una cola que se distribuyede datos y una cola que se distribuyeentre los nodos . Los ID de eventos seentre los nodos . Los ID de eventos semantienen idénticos entre los nodosmantienen idénticos entre los nodos
La cascada puede ser representadaLa cascada puede ser representadacomo un árbol donde los eventoscomo un árbol donde los eventoscreados en la raíz se propagan sobrecreados en la raíz se propagan sobrela cascada de otros nodosla cascada de otros nodos
Solo puede haber unSolo puede haber un nodonodo raíz peroraíz pero
cualquier número de ramas u hojascualquier número de ramas u hojas Los nodos hoja son específicos de laLos nodos hoja son específicos de la
replicación ellos no tienen una copiareplicación ellos no tienen una copiade la cola y no participan en elde la cola y no participan en elevento de propagaciónevento de propagación
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 36/54
PgQ: CASCADAPgQ: CASCADA
Una replicación en cascada tí pica serí a de una base de datosUna replicación en cascada tí pica serí a de una base de datosprimaria (nodo raí z), y una réplica en espera (rama)primaria (nodo raí z), y una réplica en espera (rama)
Nosotros podemos cambiar fácilmente las funciones deNosotros podemos cambiar fácilmente las funciones de
replicación de los nodos raíz o rama y losreplicación de los nodos raíz o rama y losConsumidores seguirán como si nada hubiera pasadoConsumidores seguirán como si nada hubiera pasado
En caso de que el nodo raíz colapse, se promueve unEn caso de que el nodo raíz colapse, se promueve unnodo rama sobreviviente anodo rama sobreviviente a nodonodo raíz y se reconfiguraraíz y se reconfiguralos “Consumers” , en estelos “Consumers” , en este escenarioescenario podría existir podría existir
pérdidas de datospérdidas de datos
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 37/54
PgQ: WrapupPgQ: Wrapup
Productores generan eventos en las colasProductores generan eventos en las colas
Los Tickers de grupos de eventos en lotesLos Tickers de grupos de eventos en lotes Los lotes de eventos son proporcionados a losLos lotes de eventos son proporcionados a los
Consumidores en un ordenamiento FIFOConsumidores en un ordenamiento FIFO Consumidores pueden procesar los eventos con pgq_extConsumidores pueden procesar los eventos con pgq_ext
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 38/54
LONDISTE : REPLICACIÓNLONDISTE : REPLICACIÓN
Implementación de replicación Maestro / Esclavo sobre PgQImplementación de replicación Maestro / Esclavo sobre PgQ
Usa sqltriga/logtriga para capturar los cambios de las tablas de laUsa sqltriga/logtriga para capturar los cambios de las tablas de labase Maestrabase Maestra
PgQ “Consumer” replica los eventos capturados entre losPgQ “Consumer” replica los eventos capturados entre los
esclavosesclavos Un master puede tener varios esclavosUn master puede tener varios esclavos Los esclavos pueden ser maestros de otros esclavosLos esclavos pueden ser maestros de otros esclavos
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 39/54
LONDISTE : CONFIGURACIÓNLONDISTE : CONFIGURACIÓN
Prepara el archivo de configuración : bases de datosPrepara el archivo de configuración : bases de datos origenorigen y destino yy destino yel nombre de la colael nombre de la cola
Ejecutar los comandos londiste de instalación para el Proveedor Ejecutar los comandos londiste de instalación para el Proveedor y Consumidor y Consumidor
Comenzar el proceso de replicación entre el maestro y el esclavoComenzar el proceso de replicación entre el maestro y el esclavo Se empieza la copia inicial las tablas de la base de datos esclavaSe empieza la copia inicial las tablas de la base de datos esclava
se pueden usar una vez termine este procesose pueden usar una vez termine este proceso
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 40/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIONES PRELIMINARESCONFIGURACIONES PRELIMINARES
Instalación del sistema operativo LinuxInstalación del sistema operativo Linux
Instalación de la base de datos PostgreSQLInstalación de la base de datos PostgreSQL
Instalación de las herramientas SKYTOOLInstalación de las herramientas SKYTOOL
((yum install skytools)yum install skytools)
Creación de la base de datos de maestraCreación de la base de datos de maestra
Carga de datos iniciales en la base de datos maestraCarga de datos iniciales en la base de datos maestra
Creació
n de la base de datos esclavaCreació
n de la base de datos esclava Creación de tablas y secuencias en la base de datos esclavaCreación de tablas y secuencias en la base de datos esclava
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 41/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE PgQCONFIGURACIÓN DE PgQ
Crear la carpeta /etc/skytools en el servidor de la baseCrear la carpeta /etc/skytools en el servidor de la basemaestra y también en los esclavos, como dueño postgresmaestra y también en los esclavos, como dueño postgres
mkdir skytoolsmkdir skytools
chown postgres: skytoolschown postgres: skytools
Crear el archivo de configuración pgqadm en /etc/skytools/ Crear el archivo de configuración pgqadm en /etc/skytools/ ( pgqadm.ini) en el servidor maestro y en el servidor esclavo( pgqadm.ini) en el servidor maestro y en el servidor esclavo
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 42/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE PgQCONFIGURACIÓN DE PgQ
[pgqadm][pgqadm]
# nombre del job unico# nombre del job unico
job_name = replica job_name = replica
db = dbname=prueba port=5432 host=192.168.20.28 user=replicadb = dbname=prueba port=5432 host=192.168.20.28 user=replicapassword=replica11password=replica11
# frecuencia de mantenimeinto# frecuencia de mantenimeinto
maint_delay_min = 2maint_delay_min = 2
# frecuencia de verificación de actividades# frecuencia de verificación de actividadesloop_delay = 0.1loop_delay = 0.1
logfile = /var/log/skytools/%(job_name)s.loglogfile = /var/log/skytools/%(job_name)s.log
pidfile = /var/log/skytools/%(job_name)s.pidpidfile = /var/log/skytools/%(job_name)s.pid
use_skylog = 0use_skylog = 0
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 43/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE PgQCONFIGURACIÓN DE PgQ
Colocar como dueño a postgres del archivo pgqadm.iniColocar como dueño a postgres del archivo pgqadm.ini
chown postgres: pgqadm.inichown postgres: pgqadm.ini
Cambiar al usuario postgres su – postgresCambiar al usuario postgres su – postgres
Crear en var/log la carpeta skytools como dueño postgresCrear en var/log la carpeta skytools como dueño postgres Configuración de la estructura pgqadm servidor maestroConfiguración de la estructura pgqadm servidor maestro
pgqadm.py /etc/skytools/ pgqadm.ini installpgqadm.py /etc/skytools/ pgqadm.ini install
Inicialización del ticker en el servidor maestro como usuarioInicialización del ticker en el servidor maestro como usuario
postgrespostgresEjecutamos la siguiente lí nea de comando pgqadm.py d / Ejecutamos la siguiente lí nea de comando pgqadm.py d /
etc/skytools/pgqadm.ini tickeretc/skytools/pgqadm.ini ticker
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 44/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE PgQCONFIGURACIÓN DE PgQ
Revisar que la generación e inicialización de la colaRevisar que la generación e inicialización de la colaeste correcto en el servidor maestroeste correcto en el servidor maestro
Ejecutamos la siguiente línea de comando ;Ejecutamos la siguiente línea de comando ;
pgqadm.py /etc/skytools/pgqadm.ini statuspgqadm.py /etc/skytools/pgqadm.ini status
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 45/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE
Creamos el archivo de configuración londiste.iniCreamos el archivo de configuración londiste.ini
#nombre de trabajo#nombre de trabajo
job_name = pruebalondiste job_name = pruebalondiste
provider_db = dbname=prueba port=5432provider_db = dbname=prueba port=5432host=192.168.40.207 user=ureplica password=replica11host=192.168.40.207 user=ureplica password=replica11
subscriber_db = dbname=pruebareplica port=5432subscriber_db = dbname=pruebareplica port=5432host=192.168.40.208 user=replica password=replica11host=192.168.40.208 user=replica password=replica11
pgq_queue_name = cola1_replicapruebapgq_queue_name = cola1_replicaprueba
logfile = /var/log/skytools/%(job_name)s.loglogfile = /var/log/skytools/%(job_name)s.logpidfile = /var/log/skytools/%(job_name)s.pidpidfile = /var/log/skytools/%(job_name)s.pid
# loop_delay = 1# loop_delay = 1
# lock_timeout = 10.0# lock_timeout = 10.0
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 46/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE
Instalamos la estructura londiste en el proveedor paraInstalamos la estructura londiste en el proveedor paralo cual ejecutamos la siguiente línea de comando en ello cual ejecutamos la siguiente línea de comando en elservidor maestroservidor maestro
londiste.py londiste.ini provider installlondiste.py londiste.ini provider install
Instalamos la estructura londiste en los consumidoresInstalamos la estructura londiste en los consumidoresejecutando la siguiente línea de comandoejecutando la siguiente línea de comando
londiste.py londiste.ini subscriber installlondiste.py londiste.ini subscriber install Verificamos el estado de la cola desde losVerificamos el estado de la cola desde los
consumidores para lo cual ejecutamos la siguienteconsumidores para lo cual ejecutamos la siguientelínea de comandolínea de comando
pgqadm.py pgqadm.ini statuspgqadm.py pgqadm.ini status
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 47/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE
Inicializamos el proceso de replicación en el servidor Inicializamos el proceso de replicación en el servidor maestro para lo cual ejecutamos el siguiente comandomaestro para lo cual ejecutamos el siguiente comando
londiste.py -d londiste.ini replaylondiste.py -d londiste.ini replay
Tenemos que indicar que tablas y que secuencias seránTenemos que indicar que tablas y que secuencias seráncolocadas en el proveedor colocadas en el proveedor
#!/bin/sh#!/bin/sh
londiste.py londiste.ini provider add catastrofelondiste.py londiste.ini provider add catastrofe
londiste.py londiste.ini provider add catastrofe_paislondiste.py londiste.ini provider add catastrofe_pais
londiste.py londiste.ini provider add continentelondiste.py londiste.ini provider add continente
londiste.py londiste.ini provider add paislondiste.py londiste.ini provider add pais
londiste.py londiste.ini provider add tipo_catastrofelondiste.py londiste.ini provider add tipo_catastrofe
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 48/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE
#!/bin/sh#!/bin/sh
londiste.py londiste.ini provider add-seqlondiste.py londiste.ini provider add-seqcatastrofe_codigocatastrofe_seqcatastrofe_codigocatastrofe_seq
londiste.py londiste.ini provider add-seqlondiste.py londiste.ini provider add-seqcontinente_codigocontinente_seqcontinente_codigocontinente_seq
londiste.py londiste.ini provider add-seqlondiste.py londiste.ini provider add-seqpais_codigopais_seqpais_codigopais_seq
londiste.py londiste.ini provider add-seqlondiste.py londiste.ini provider add-seq
tipo_catastrofe_codigotipocatastrofe_seqtipo_catastrofe_codigotipocatastrofe_seq
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 49/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE
Tenemos que indicar que tablas y que secuenciasTenemos que indicar que tablas y que secuenciasserán colocadas en el suscriptor serán colocadas en el suscriptor
#!/bin/sh#!/bin/sh
londiste.py londiste.ini subscriber add catastrofelondiste.py londiste.ini subscriber add catastrofelondiste.py londiste.ini subscriber add catastrofe_paislondiste.py londiste.ini subscriber add catastrofe_pais
londiste.py londiste.ini subscriber add continentelondiste.py londiste.ini subscriber add continente
londiste.py londiste.ini subscriber add paislondiste.py londiste.ini subscriber add pais
londiste.py londiste.ini subscriber add tipo_catastrofelondiste.py londiste.ini subscriber add tipo_catastrofe
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 50/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE
#!/bin/sh#!/bin/sh
londiste.py londiste.ini subscriber add-seqlondiste.py londiste.ini subscriber add-seqcatastrofe_codigocatastrofe_seqcatastrofe_codigocatastrofe_seq
londiste.py londiste.ini subscriber add-seqlondiste.py londiste.ini subscriber add-seqcontinente_codigocontinente_seqcontinente_codigocontinente_seq
londiste.py londiste.ini subscriber add-seqlondiste.py londiste.ini subscriber add-seqpais_codigopais_seqpais_codigopais_seq
londiste.py londiste.ini subscriber add-seqlondiste.py londiste.ini subscriber add-seq
tipo_catastrofe_codigotipocatastrofe_seqtipo_catastrofe_codigotipocatastrofe_seq
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 51/54
TALLER DE REPLICACIÓN:TALLER DE REPLICACIÓN:
CONFIGURACIÓN DE LONDISTECONFIGURACIÓN DE LONDISTE
Verificamos el estado de la cola tanto en el servidor Verificamos el estado de la cola tanto en el servidor proveedor como en los consumidoresproveedor como en los consumidores
pgqadm.py pgqadm.ini statuspgqadm.py pgqadm.ini status
Revisar los logs para verificar que no existanRevisar los logs para verificar que no existaninconvenientesinconvenientes En caso de que se caiga la réplica hacer lo siguiente :En caso de que se caiga la réplica hacer lo siguiente :
1.- Reiniciar la generación de tickers con pgqadm.py1.- Reiniciar la generación de tickers con pgqadm.py-d /etc/skytools/pgqadm.ini ticker -d /etc/skytools/pgqadm.ini ticker
2.- Reiniciar la replicación con londiste.py -d2.- Reiniciar la replicación con londiste.py -dlondiste.ini replaylondiste.ini replay
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 52/54
CONCLUSIONES / CONCLUSIONES /
RECOMENDACIONESRECOMENDACIONES
Alternativa viable de replicación con Postgres
Para la replicación tomar en cuenta que solo se pueden replicartablas que tengan clave primaria
Para una actualización de la estructura de la base de datosejecutar el cambio primero en la base esclava y luego en la basemaestra
Nunca ejecutar ningún script de cambio update /delete etc en la
base esclava siempre en la base maestra
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 53/54
PREGUNTASPREGUNTAS
Gracias
Por : Ing. Marcelo Silva.
5/10/2018 Presentacion Alta Disponibilidad Postgres - slidepdf.com
http://slidepdf.com/reader/full/presentacion-alta-disponibilidad-postgres 54/54
PREGUNTASPREGUNTAS
Gracias
Por : Ing. Mario López B.