PDF de programación - Replicación y alta disponibilidad de PostgreSQL con pgpool-II

Imágen de pdf Replicación y alta disponibilidad de PostgreSQL con pgpool-II

Replicación y alta disponibilidad de PostgreSQL con pgpool-IIgráfica de visualizaciones

Publicado el 2 de Abril del 2018
5.089 visualizaciones desde el 2 de Abril del 2018
219,0 KB
37 paginas
Creado hace 14a (15/03/2010)
Replicación y alta disponibilidad de PostgreSQL con pgpool-II

Por Jaume Sabater, publicado el 1 de noviembre de 2008.

Índice

1.

Introducción

1. Failover cluster
2. Sobre PostgreSQL
3. Sobre pgpool-II
4. Sobre Debian GNU/Linux

Instalación de paquetes y configuración de dependencias

2. Arquitectura del sistema
3.
4. Configuración de PostgreSQL
5. Configuración de pgpool-II
6. Pruebas de replicación
7. Recuperación en línea
8. El Write-Ahead Log

1. Procedimiento completo
2. Primera fase
3. Segunda fase
4. Tercera fase
5. Pasos finales
6. Scripts necesarios

1. wal_archiving
2. pgpool-failover
3. pgpool-failback
4. base-backup
5. pgpool-recovery-pitr
6. pgpool_remote_start

9. Comandos de PCP
10.Simulación de caída y recuperación de un nodo
11.Alta disponibilidad de pgpool-II

Instalación de Heartbeat

1. El proyecto Linux High Availability
2.
3. Configuración de Heartbeat
4. Simulación de la caída del servicio

12.Herramientas de monitorización

1. pg_osmem y pg_buffercache
2. pg_top
3. ps
4. pgd
iotop
5.

13.Optimización de PostgreSQL

1. Autovacuum y cargas de datos
2. Procesos errantes

14.FAQ (Frequently Asked Question)
15.Bibliografía
16.Historial de revisiones

Introducción

En este artículo se muestra cómo instalar, configurar y mantener un clúster de servidores de bases de datos
PostgreSQL gestionados mediante un middleware llamado pgpool-II sobre el sistema operativo Debian
GNU/Linux. Dicho clúster ofrece capacidades de replicación, balanceo de carga y un pool de conexiones, y es
capaz de realizar failover o degeneración de un nodo que deje de funcionar y de recuperar nodos caídos en línea
(sin dejar de dar servicio). Se trata de un clúster activo-pasivo, si bien se hace uso del nodo pasivo para lectura
con el propósito de mejorar la productividad del sistema.

Failover cluster

Un failover cluster (o clúster activo-pasivo) es un grupo de ordenadores independientes que trabajan
conjuntamente para incrementar la disponibilidad de diversas aplicaciones y servicios. Los servidores en el clúster
(llamados nodos) están interconectados mediante cables físicos y por software. Si uno de los nodos cae, otro
empieza a dar servicio (proceso conocido como failover) sin necesidad de intervención humana. Esta guía
describe los pasos para instalar y configurar un failover clúster con dos o más nodos.

Sobre PostgreSQL

PostgreSQL es la base de datos relacional de código abierto más avanzada del mundo. Distribuida bajo licencia
BSD (del inglés, Berkeley Software Distribution), lleva más de 15 años desarrollándose y su arquitectura goza de
una excelente reputación por su fiabilidad, integridad de datos y correctitud.

PostgreSQL dispone de versiones para prácticamente todos los sistemas operativos y cumple totalmente con
ACID (del inglés, Atomicity, Consistency, Isolation, Durability). Tiene soporte para claves extranjeras, joins, vistas,
disparadores y procedimientos almacenados (en múltiples lenguajes de programación). Incluye la mayoría de los
tipos de datos de SQL92 y SQL99 y, asimismo, soporta el almacenamiento de grandes objetos binarios, como
imágenes, sonidos y vídeos. Tiene interfaces de programación nativas para C/C++, Java, .Net, Perl, PHP, Python,
Ruby, Tcl y ODBC, entre otros, y una excepcional documentación.

PostgreSQL ofrece sofisticadas características tales como control concurrente multiversión (MVCC), point in time
recovery (PITR), tablespaces, replicación asíncrona, transacciones anidadas (savepoints), copias de seguridad en
caliente/en línea, un sofisticado planificador/optimizador de consultas y write ahead logging para ser tolerante a
fallos de hardware. Soporta juegos de caracteres internacionales, codificaciones de caracteres multibyte, Unicode
y realiza ordenaciones dependiendo de la configuración de idioma local, de la diferenciación de mayúsculas y
minúsculas y del formato. Es altamente escalable tanto en la cantidad bruta de datos que puede manejar como en
el número de usuarios concurrentes que puede atender. Hay sistemas activos en producción con PostgreSQL que
manejan más de 4 terabytes de datos.

Sobre pgpool-II

pgpool-II habla los protocolos de frontend y backend de PostgreSQL, y pasa las conexiones entre ellos. De ese
modo, una aplicación de base de datos (frontend) cree que pgpool-II es el verdadero servidor de PostgreSQL, y el
servidor (backend) ve a pgpool-II como uno de sus clientes. Debido a que pgpool-II es transparente tanto para el
servidor como para el cliente, una aplicación de base de datos existente puede empezar a usarse con pgpool-II
casi sin ningún cambio en su código fuente.

pgpool-II funciona sobre Linux, Solaris, FreeBSD y la mayoría de las arquitecturas UNIX. Windows no está
soportado. Las versiones de PostgreSQL soportadas son de la 6.4 para arriba. Para usar la paralelización de
consultas es necesaria la versión 7.4 o superior.

pgpool-II proporciona las siguientes características:

• Limita el excedente de conexiones. PostgreSQL soporta un cierto número de conexiones concurrentes y
rechaza las que superen dicha cifra. Aumentar el límite máximo de conexiones incrementa el consumo de
recursos y afecta al rendimiento del sistema. pgpool-II tiene también un límite máximo de conexiones, pero
las conexiones extras se mantienen en una cola en lugar de devolver un error inmediatamente.

• Pool de conexiones. pgpool-II mantiene abiertas las conexiones a los servidores PostgreSQL y las

reutiliza siempre que se solicita una nueva conexión con las mismas propiedades (nombre de usuario,
base de datos y versión del protocolo). Ello reduce la sobrecarga en las conexiones y mejora la
productividad global del sistema.

• Replicación. pgpool-II puede gestionar múltiples servidores PostgreSQL. El uso de la función de

replicación permite crear una copia en dos o más discos físicos, de modo que el servicio puede continuar
sin parar los servidores en caso de fallo en algún disco.

• Balanceo de carga. Si se replica una base de datos, la ejecución de una consulta SELECT en cualquiera
de los servidores devolverá el mismo resultado. pgpool-II se aprovecha de la característica de replicación
para reducir la carga en cada uno de los servidores PostgreSQL distribuyendo las consultas SELECT
entre los múltiples servidores, mejorando así la productividad global del sistema. En el mejor caso, el
rendimiento mejora proporcionalmente al número de servidores PostgreSQL. El balanceo de carga
funciona mejor en la situación en la cuál hay muchos usuarios ejecutando muchas consultas al mismo
tiempo.

• Paralelización de consultas. Al usar la función de paralelización de consultas, los datos pueden dividirse

entre varios servidores, de modo que la consulta puede ejecutarse en todos los servidores de manera
concurrente para reducir el tiempo total de ejecución. La paralelización de consultas es una solución
adecuada para búsquedas de datos a gran escala.

Sobre Debian GNU/Linux

Debian GNU/Linux es un sistema operativo libre (el conjunto de programas básicos y utilidades que hacen que un
ordenador funcione). Debian utiliza el núcleo Linux y las herramientas básicas de GNU. Para esta instalación se
utilizará el sistema operativo Debian Lenny para la arquitectura x86_64 (AMD64/EM64T), partiendo de una
instalación básica, sin ninguna tarea seleccionada en el selector de tareas del instalador. El sistema de ficheros
elegido será XFS. La misma instalación puede obtenerse con Debian Etch y el repositorio de backports.

Arquitectura del sistema

El término clúster hace referencia a un conjunto de sistemas informáticos trabajando conjuntamente por un
objetivo común. Como puede apreciarse, esta definición es muy genérica. No es, sino, un reflejo de la gran
variedad y diversidad de acercamientos posibles a la hora de configurar un clúster y, por lo tanto, prueba de que el
lector no debe tomar la arquitectura utilizada en el artículo más que como referencia y base para sus futuros
trabajos.

En el clúster de este artículo se persiguen dos objetivos: uno, la alta disponibilidad, y dos, el rendimiento. La
funcionalidad que persigue el clúster es únicamente la de servidor de base de datos, pero lo hace a través de tres
aplicaciones:

• PostgreSQL, el sistema gestor de bases de datos (S.G.B.D.)
• pgpool-II, el middleware que gestiona la alta disponibilidad de los servidores de PostgreSQL.
• Heartbeat, un software que usaremos para dar alta disponibilidad a pgpool-II y a la dirección IP de servicio.

Esta configuración nos permite obtener alta disponibilidad de todos los servicios y recursos en las dos máquinas
destinadas a este clúster. El diagrama de la arquitectura resultante sería el siguiente:

Instalación de paquetes y configuración de dependencias

Se toma como punto de inicio un sistema x86_64 con Debian GNU/Linux Etch o Lenny instalado. Se utilizarán las
siguientes versiones de software:

• PostgreSQL 8.3.x
• pgpool-II 2.2.x
• Heartbeat 2.x

Antes de empezar, instalaremos un conjunto de paquetes básico para cualquier sistema, así como una serie de
utilidades que nos harán falta para la gestión y el mantenimiento del clúster:

apt-get install ntp openssl file psmisc sysstat bzip2 unzip nmap dstat rsync wget
ccze tcpdump pciutils dnsutils host

rsync lo usaremos para la recuperación en línea de nodos, ntp para mantener el reloj del sistema sincronizado. El

prototipo inicial de este clúster se probó en una máquina con dos instancias de Xen y una base de datos de
prueba creada con pgbench. Más tarde se configuró una versión de preproducción sobre sendos Intel Quad Core
con 8 GB de RAM y la versión final del clúster se configuró sobre dos nodos con doble Intel Quad Core cada uno y
16 GB de RAM. La base de datos final ocupa algo más de 30 GB y se encuentra sobre dos discos SAS de 15.000
RPM en RAID 1.

A efectos de este artículo, a continuación se presenta un resumen de los datos de
  • Links de descarga
http://lwp-l.com/pdf10105

Comentarios de: Replicación y alta disponibilidad de PostgreSQL con pgpool-II (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad