bdd - postgresql & pgpool-ii

27
UNIVERSIDAD DE EL SALVADOR. FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE. DEPARTAMENTO DE INGENIERÍA Y ARQUITECTURA. INGENIERÍA DE SISTEMAS INFORMÁTICOS. CÁTEDRA: BASE DE DATOS. TEMA DEL PROYECTO: REPLICACIÓN DE BASES DE DATOS EN POSTGRESQL UTLIZANDO PGPOOL-II. CATEDRÁTICO: Ing. Ernesto Alexander Calderón Peraza. PRESENTADO POR: Chacón Linares, Franco Eder. Cruz Salazar, José Manuel. Figueroa Jiménez, Carlos Enrique. Reinoza Arocha, Giovanni Ernesto. CICLO: I 2010. LUGAR Y FECHA DE PRESENTACIÓN: Santa Ana, 14 de Junio de 2010.

Upload: jose-manuel-cruz-salazar

Post on 19-Jun-2015

930 views

Category:

Documents


0 download

DESCRIPTION

Proyecto de Base de Datos - Junio 2010...

TRANSCRIPT

Page 1: Bdd - Postgresql & Pgpool-II

UNIVERSIDAD DE EL SALVADOR.

FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE.

DEPARTAMENTO DE INGENIERÍA Y ARQUITECTURA.

INGENIERÍA DE SISTEMAS INFORMÁTICOS.

CÁTEDRA:

BASE DE DATOS.

TEMA DEL PROYECTO:

“REPLICACIÓN DE BASES DE DATOS EN POSTGRESQL UTLIZANDO

PGPOOL-II”.

CATEDRÁTICO:

Ing. Ernesto Alexander Calderón Peraza.

PRESENTADO POR:

Chacón Linares, Franco Eder.

Cruz Salazar, José Manuel.

Figueroa Jiménez, Carlos Enrique.

Reinoza Arocha, Giovanni Ernesto.

CICLO:

I – 2010.

LUGAR Y FECHA DE PRESENTACIÓN:

Santa Ana, 14 de Junio de 2010.

Page 2: Bdd - Postgresql & Pgpool-II

II

ÍNDICE

ÍNDICE ................................................................................................................................. II

REQUISITOS DEL PROYECTO ...................................................................................... 3

SERVIDORES. .................................................................................................................... 3

ADMINISTRADOR Y USUARIOS FINALES. .................................................................... 3

SISTEMA OPERATIVO ..................................................................................................... 4

DEBIAN GNU / LINUX. ..................................................................................................... 4

INTRODUCCIÓN. .............................................................................................................. 4

PRIMEROS PASOS. ........................................................................................................... 4

IDENTIFICACIÓN DEL EQUIPO. ................................................................................... 5

PARTICIONAMIENTO. ..................................................................................................... 5

ADMINISTRACIÓN DE USUARIOS. ................................................................................ 6

EL SISTEMA BASE. ........................................................................................................... 6

CONFIGURACIONES Y ACTUALIZACIONES ............................................................ 7

CONFIGURACIÓN DE LA RED. ...................................................................................... 8

ACTUALIZAR NUESTRO SISTEMA BASE. .................................................................... 10

POSTGRESQL ................................................................................................................... 11

INSTALACIÓN. ................................................................................................................ 12

PGPOOL–II ........................................................................................................................ 12

INSTALACIÓN. ................................................................................................................ 13

ARCHIVOS DE CONFIGURACIÓN .............................................................................. 14

PGPOOL-II. ..................................................................................................................... 14

POSTGRESQL. ................................................................................................................. 16

GALERÍA DE IMÁGENES .............................................................................................. 18

DEBIAN GNU / LINUX. ................................................................................................... 18

FUENTES DE CONSULTA .............................................................................................. 27

Page 3: Bdd - Postgresql & Pgpool-II

3

REQUISITOS DEL PROYECTO

A continuación se presentan los requisitos de hardware para la correcta

implementación de PostgreSQL con Pgpool-II, tanto para los equipos a utilizar como

servidores de base de datos como también para los equipos utilizados por los usuarios

finales que utilicen alguna aplicación para conectarse al servidor.

SERVIDORES.

Evaluación y Pruebas. Entornos de Producción.

Procesador Intel/AMD

de 32-bit ó 64-bit a 1.5

GHz.

Procesador Intel/AMD de 32-bit ó 64-bit a 2.0 GHz. Para una

implementación grande (más de 2000 clientes) se recomienda

utilizar arquitectura de 64-bit (hardware y software).

1 GB RAM. De 2 a 4 GB de RAM.

5 GB de espacio libre

en disco para el

software y los

registros.

10 GB de espacio libre en disco para el software y los registros.

Además se recomienda el uso de discos S-ATA o SCSI para

mejorar el desempeño y una implementación de respaldo en

RAID para proporcionar redundancia.

Requisitos Generales.

Espacio libre para archivos de compaginación de bitácora, además en medios de

producción espacio suficiente para almacenamiento (hasta más de un Terabyte).

Memoria 2 Megabytes por conexión.

Sistema base sin entorno gráfico para proporcionar un mayor desempeño.

Como mínimo tres servidores replicándose información en redes distintas, pero, para

propósitos de enseñanza, toda la implementación que se describe en este manual se

realizará en el mismo segmento de red.

Requisitos Misceláneos.

Los equipos servidores deberían estar configurados para ejecutar “NTP” (Network Time

Protocol) regularmente de forma automática.

ADMINISTRADOR Y USUARIOS FINALES.

Requisitos Mínimos. Requisitos Recomendados.

Procesador Intel/AMD/Power PC a 750

MHz.

Procesador Intel/AMD/Power PC a 1.5

GHz.

256 MB RAM. 512 MB RAM.

Combinaciones Mínimas Verificadas de SO y aplicaciones clientes de Base de Datos.

Idealmente la mayoría de Sistemas Operativos y aplicaciones que soporten conexiones a

servidores de bases de datos deberían de funcionar.

Resolución Mínima de Monitor. 800 x 600 píxeles.

Velocidad Mínima de Conexión a Internet. 128 kbps.

Page 4: Bdd - Postgresql & Pgpool-II

4

SISTEMA OPERATIVO

DEBIAN GNU / LINUX.

Este será el SO utilizado para llevar a cabo la implementación de nuestro proyecto,

más específicamente la actual (hasta el momento de la redacción de este artículo) versión

“Estable” 5.0 (de nombre código “Lenny”). Por lo cual necesitamos un disco de instalación

del mismo sistema, el cual podemos descargar gratuitamente desde alguno de los servidores

disponibles que aparecen listados en http://www.debian.org/CD/http-ftp/; además de una

conexión a Internet de Banda Ancha para las actualizaciones del SO.

INTRODUCCIÓN.

En este tutorial se utilizarán tres equipos, un servidor y dos clientes, vale aclarar

también que, para propósitos de enseñanza, se utilizarán como nombres de equipo

(hostname) “deb” seguido de algún número (es decir deb1, deb2 y deb3).

Además del nombre de dominio que según el estándar en GNU/Linux se modifica

en el archivo que se encuentra en la ruta /etc/hosts las entradas de: deb1, deb2, deb3

deben de existir con sus respectivas direcciones IP. Cabe destacar que todas estas opciones

pueden ser cambiadas por otras más cómodas al usuario a la hora de la implementación del

proyecto.

PRIMEROS PASOS.

El siguiente apartado indica los pasos básicos a seguir para la correcta instalación

del sistema operativo utilizado, pero lamentablemente al momento de la realización del

presente manual sólo se tenía a disposición una versión anterior del mismo (Debian 4.0

“Etch”); afortunadamente el proceso de instalación se ha mantenido idéntico en ambas

versiones, por lo que igualmente los pasos a continuación aún son válidos.

Inserte el disco de instalación de Debian dentro de alguna unidad lectora de

CD/DVD y seleccione dicha unidad como la primera en buscar un elemento de carga (First

Boot Device), ya sea dentro de la BIOS de su equipo o mediante el menú de carga (Boot

Menu). Vea las Figuras 1 y 2 de la Galería de Imágenes para una mayor referencia.

Si todo salió bien aparecerá una pantalla como la que muestra la Figura 3 en su monitor.

Presione la tecla “Enter” para iniciar el proceso de instalación del SO.

El proceso de instalación comenzará, y como primer punto le pedirá que seleccione

un lenguaje en el que se le mostrarán los menús y las opciones de la instalación (Figura 4).

Después le preguntará acerca de su ubicación geográfica actual (Figura 5).

Y posteriormente acerca de la distribución de su teclado (Figura 6).

Page 5: Bdd - Postgresql & Pgpool-II

5

El instalador procederá a revisar el disco de instalación, el hardware encontrado en

el equipo y configurará la red con DHCP de encontrar una conexión que conecte a un

servidor DHCP en la red. Ver las Figuras 7 a 12.

IDENTIFICACIÓN DEL EQUIPO.

A continuación, se le pedirá que ingrese un nombre para el equipo (hostname) como

lo muestra la Figura 13. Para esta implementación, el servidor de base de datos será

nombrado como “deb2.bdd.edu”, mientras que los clientes serán “deb1.bdd.edu” y

“deb3.bdd.edu”, así que procederemos a introducir los nombres de equipo respectivos.

Y un nombre para el dominio (domain), para esta implementación se introduce

“bdd.edu” (Figura 14). No debe preocuparse si decide cambiar el nombre del equipo o del

dominio después, ya que dicha acción también puede llevarse a cabo.

El instalador procederá a revisar los dispositivos de almacenamiento que posee el

equipo, así como todo el hardware que no se había configurado anteriormente. Ver la

Figura 15.

PARTICIONAMIENTO.

Ahora usted tendrá que particionar su disco duro (Figura 16). En este paso, hay que

prestar atención especial al crear una partición que posea el espacio libre suficiente para

cumplir los requisitos mínimos para la correcta instalación de todos los paquetes necesarios

para la implementación de nuestro proyecto; si lo desea puede revisar el apartado referente

a los Requisitos del Proyecto, en las Páginas 4 y 5 del presente manual.

Por el bien de mantener lo más simple posible la explicación de este punto se

procederá a crear una sola partición (con el punto de montaje “/”) y una pequeña partición

para utilizar como “Área de Intercambio” (Swap), así que se procede a seleccionar la

opción de Método de Particionado “Guiado - Utilizar Todo el Disco” (Figura 17).

Por supuesto, la opción seleccionada de particionado es una elección completamente

del usuario, así que si lo desea puede crear más particiones, y montar diversas carpetas

importantes del SO en cada una de ellas, pero eso ya queda a gusto de cada usuario.

Seleccione la unidad de disco duro que desea particionar (Figura 18).

Después seleccione el esquema de particionamiento. Por motivos de simplicidad,

como se mencionó anteriormente, para este ejemplo se seleccionó colocar “Todos los

Ficheros en una Partición (Recomendado para Novatos)” tal y como lo muestra la Figura

19. Queda a decisión y gusto del usuario que opción se elegirá.

Cuando se halla terminado de seleccionar y calcular las opciones para el

particionado (Figura 20), seleccione “Finalizar el Particionado y Escribir los Cambios en el

Disco” (Figura 21).

Seleccione “Sí” cuando se le pregunte acerca de “Escribir los Cambios en el Disco”

(Figura 22).

Page 6: Bdd - Postgresql & Pgpool-II

6

Después de un rato, sus nuevas particiones están creadas y formateadas (Figura 23).

A continuación, el programa de instalación procederá a configurar el reloj del

equipo en base a la región geográfica seleccionada en un principio (Figura 24).

ADMINISTRACIÓN DE USUARIOS.

A continuación se le preguntará por una contraseña para el “Súper Usuario” (root).

Y una confirmación de la contraseña anterior para evitar errores de escritura (Figuras 25 y

26).

Cree una cuenta de “Usuario Normal”, por ejemplo un usuario “Administrador”

(real user’s name, ver Figura 27) con el nombre de usuario “administrador” (username, ver

Figura 28), el cual sólo debe estar conformado por números y letras minúsculas (el primer

carácter sólo puede ser una letra minúscula).

Tenga en cuenta que el nombre de usuario “admin” es un nombre reservado en

Debian y, como anteriormente en el proceso de particionado, la selección del username en

este paso queda a elección del usuario, en esta implementación se crean usuarios “deb” más

un número que haga referencia a cada uno de los equipos utilizados; por ejemplo el equipo

“deb1” poseerá un usuario “deb1”.

A continuación se le preguntará por una contraseña para el usuario recién creado, al

igual que una confirmación de la contraseña anterior para evitar errores de escritura

(Figuras 29 y 30).

EL SISTEMA BASE.

A continuación se procederá a instalar el sistema base (Figuras 31 a 33).

Seguidamente se tendrá que configurar apt, ya que al estar utilizando un disco de

instalación, este contiene sólo un conjunto reducido de paquetes, o en su defecto unas

versiones no actualizadas de los mismos. Por lo anterior se recomienda utilizar una réplica

de red, tal y como lo muestra la Figura 34.

Seleccione el país donde se encuentre la réplica que utilizará (normalmente el país

donde se encuentra es una opción razonable).

Entonces seleccione la réplica de red que quiera utilizar; por ejemplo

“ftp.es.debian.org”, que es el repositorio (sinónimo de réplica o “mirror”) primario de

Debian en España.

Cabe destacar que en este paso dejamos dos posibles selecciones de réplicas a

manera de ejemplos; las cuales pueden ser revisadas observando las Figuras 35 y 36 para

España, y las Figuras 37 y 38 para El Salvador.

A menos que se utilice un servicio de Proxy HTTP, dejaremos este campo en blanco

y se procederá a seleccionar la opción de “Continuar” (Figura 39).

Page 7: Bdd - Postgresql & Pgpool-II

7

apt se encargará ahora de actualizar su base de paquetes disponibles para instalar

(Figuras 40 y 41).

Después se preguntará acerca de si se desea ser parte de una encuesta sobre el uso

de los paquetes (como un concurso de popularidad pero de software), queda a elección del

usuario elegir el participar o no (Figura 43).

Para la finalización satisfactoria de nuestra implementación de un servidor de correo

electrónico necesitamos un Servidor de Base de Datos (obvio), opcionalmente un Servidor

DNS y/o DHCP, el Sistema Estándar y los paquetes para una Computadora Portátil (esto

sólo si se va a llevar a cabo la implementación en una laptop).

Ahora bien, sólo seleccionaremos el software necesario (Sistema Estándar y

Computadora Portátil de ser necesario) y se procederá a instalar los paquetes que

necesitamos manualmente más adelante para tener un control total sobre el software que se

instalará en el sistema. Por el momento sólo seleccionaremos lo realmente necesario y

seleccionaremos “Continuar”. Revisar las Figuras 42, 44 y 45.

Los paquetes seleccionados están siendo ahora instalados en el sistema. Este paso

puede demorar algo de tiempo dependiendo de las características del equipo y de la

cantidad de actualizaciones disponibles, así como de la velocidad de la conexión a Internet

que se posea (Figuras 46 y 47).

Después de finalizada la instalación del software, se le preguntará acerca de si

quiere instalar el cargador de arranque (boot loader) “GRUB” en el MBR (Master Boot

Record o Sector Cero) del disco duro. Elija “Sí” (Figuras 48 y 49).

Seguidamente, el cargador de arranque GRUB se ha instalado como lo muestra la

Figura 50.

Finalmente la instalación de nuestro sistema base está ahora terminada. Proceda a

retirar el disco de instalación de la bandeja de la unidad de lectura y seleccione “Continuar”

para reiniciar el equipo (Figuras 51 a 53).

Si la instalación se efectuó correctamente, deberá aparecer una pantalla como la que

se muestra en la Figura 54 con el menú del GRUB mostrando los Sistemas Operativos que

se encuentran instalados en nuestro equipo (esta búsqueda se mostró en la Figura 48).

CONFIGURACIONES Y ACTUALIZACIONES

Antes de pasar a la configuración propia de la red, hay que tomar en cuenta que la

mayoría de comandos que utilizaremos a continuación solo pueden ejecutarse si se poseen

privilegios de Súper Usuario, así que procedemos a cambiar de cuenta ejecutando:

Page 8: Bdd - Postgresql & Pgpool-II

8

su

Y a continuación introducimos la contraseña que le fue asignada a dicha cuenta al

momento de la instalación del Sistema. Inmediatamente después de ingresar correctamente

la contraseña, el carácter final del cursor del PROMPT cambiará de “$” a “#”, con lo que se

nos indicará el cambio exitoso de cuenta.

CONFIGURACIÓN DE LA RED.

Ahora bien, debido a que el instalador de Debian tuvo que configurar nuestro

sistema para obtener sus opciones de red mediante DHCP, nos corresponde cambiar dicha

configuración, esto debido a que se supone que un servidor debería poseer una dirección IP

estática o fija.

Recordemos que para esta implementación se utilizará la dirección IP 192.168.1.11

en deb1 (cliente), 192.168.1.22 en deb2 (servidor), 192.168.1.33 en deb3 (cliente) y una

puerta de enlace predeterminada con dirección 192.168.1.1; las direcciones IP utilizadas

dependerán también de cada implementación final.

A continuación, se procederán a mostrar los archivos de configuración utilizados en

nuestro equipo servidor, es decir en deb2.

Editamos el archivo /etc/network/interfaces con nano (o con el editor de texto

con el que el usuario se acomode mejor) y lo modificamos de acuerdo a nuestras

necesidades. Así, para deb2 quedaría de la siguiente manera:

nano /etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

###############################################################

# Para Desechar una IP Asignada por DHCP Comentamos...

# allow-hotplug eth0

# iface eth0 inet dhcp

# Y para Asignar una IP Fija Agregamos...

auto eth0

iface eth0 inet static

address 192.168.1.22

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

gateway 192.168.1.1

# Asignamos una Interfaz Virtual con su IP Fija...

Page 9: Bdd - Postgresql & Pgpool-II

9

auto eth0:1

iface eth0:1 inet static

address 192.168.1.23

network 192.168.1.0

netmask 255.255.255.0

###############################################################

Préstese un especial cuidado al reemplazo de la línea allow-hotplug eth0 por

auto eth0; ya que de lo contrario al momento de reiniciar los servicios de red estos no

funcionarán, y se deberá de reiniciar el sistema completo. A continuación reiniciamos los

servicios de red ejecutando:

/etc/init.d/networking restart

Y procedemos a editar el archivo /etc/hosts de manera que quede así:

nano /etc/hosts

###############################################################

# Comentar...

# 127.0.0.1 localhost

# 127.0.1.1 deb2.bdd.edu deb2

# Y Agregar...

127.0.0.1 localhost.localdomain localhost

192.168.1.11 deb1.bdd.edu deb1

192.168.1.22 deb2.bdd.edu deb2

192.168.1.33 deb3.bdd.edu deb3

192.168.1.44 pgpool2.bdd.edu pgpool2

###############################################################

# The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts

El archivo /etc/hosts es en donde se coloca el nombre y la dirección IP de

nuestros “equipos anfitriones locales” (localhosts). Si se hace referencia a un equipo dentro

de este archivo entonces no es necesario consultar al servidor de nombres de dominio

(DNS) para obtener su dirección IP. La desventaja de hacer esto es que se debe mantener

este archivo actualizado si la dirección IP de alguno de los equipos anfitriones cambia. En

un sistema bien administrado los únicos nombres de equipos que suelen aparecer en este

archivo son una entrada para la interfaz de bucle local (loopback) y la dirección (junto al

nombre) de nuestros localhosts.

Ahora ejecutamos:

echo deb2.bdd.edu > /etc/hostname

Page 10: Bdd - Postgresql & Pgpool-II

10

Y procedemos a reiniciar el sistema:

reboot o mediante la orden shutdown -r now

Después ejecutamos:

hostname

hostname -f

Y ambas órdenes deberían mostrarnos como respuesta deb2.bdd.edu, tomando en

cuenta que el comando se ejecutó en deb2.

Recuerde que en Debian puede volverse Súper Usuario o usuario “root” ejecutando

la orden su e ingresando la contraseña que le fue proporcionada a dicha cuenta al momento

de la instalación del SO.

ACTUALIZAR NUESTRO SISTEMA BASE.

Si poseemos una conexión a Internet, procedemos a editar el archivo

/etc/apt/sources.list, el cual contiene la dirección de los repositorios utilizados por

apt para la instalación y actualización de programas. Comentamos la referencia al disco de

instalación y el resultado nos debería de quedar algo así:

nano /etc/apt/sources.list

#

# Disco de Instalación...

# deb cdrom:[Debian GNU/Linux 4.0 r3 _Etch_ - Official i386 DVD Binary-1

20080217-11:31]/ etch contrib main

# deb cdrom:[Debian GNU/Linux 4.0 r3 _Etch_ - Official i386 DVD Binary-1

20080217-11:31]/ etch contrib main

# Repositorio para las Actualizaciones de Seguridad...

deb http://security.debian.org/ etch/updates main contrib

deb-src http://security.debian.org/ etch/updates main contrib

###############################################################

# Repositorio Primario de España...

deb http://ftp.es.debian.org/debian/ etch main

deb-src http://ftp.es.debian.org/debian/ etch main

# Repositorio Primario de USA...

deb http://ftp.us.debian.org/debian/ etch main

deb-src http://ftp.us.debian.org/debian/ etch main

# Repositorio Primario de Inglaterra...

deb http://ftp.uk.debian.org/debian/ etch main

deb-src http://ftp.uk.debian.org/debian/ etch main

###############################################################

Page 11: Bdd - Postgresql & Pgpool-II

11

Si se necesita conocer la dirección de algún otro repositorio de paquetes, se puede

consultar la página oficial de la lista de las réplicas de Debian

(http://www.debian.org/mirror/list), y colocar dicha réplica dentro del archivo

/etc/apt/sources.list, como ya se hizo anteriormente.

Después ejecutamos:

apt-get update

Para actualizar la base de datos de los paquetes de apt y:

apt-get upgrade

Para instalar las últimas actualizaciones (si las hay).

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.

Además, PostgreSQL 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.

Page 12: Bdd - Postgresql & Pgpool-II

12

INSTALACIÓN.

En esta oportunidad veremos como instalar y configurar un servidor de base de

datos con PostgreSQL 8.4 en Debian 5.0.4. Pues bien, lo primero es descargar la versión de

PostgreSQL 8.4 del sitio oficial (http://www.postgresql.org/download) y ejecutar en

consola la siguiente orden dependiendo donde tengamos guardado nuestro archivo de

PostgresSQL:

./postgresql-8.4.bin

Y, a continuación, nos aparecerá un asistente para completar el proceso de

instalación, seguimos los pasos que se nos presentan y no debería de presentarse ningún

problema para instalar PostgreSQL. La instalación por defecto de PostgreSQL en Debian

ya nos deja un sistema gestor de base de datos completamente funcional.

A veces resulta necesario otorgarle ciertos permisos de ejecución a los archivos, por

ejemplo, en caso de ser necesario aplicamos el siguiente comando como súper-usuario:

chmod +x postgresql-8.4.bin

Cabe destacar que el paquete instalador de PostgreSQL está incluído en los

repositorios de Debian, pero lamentablemente sólo estaba disponible una versión anterior,

la cual no contenía la funcionalidad necesaria para el correcto funcionamiento de nuestra

implementación.

PGPOOL–II

Pgpool-II se podría considerar como un “intérprete” que habla entre los extremos 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

en adelante. 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.

Page 13: Bdd - Postgresql & Pgpool-II

13

Agrupación 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.

Consultas en Paralelo. 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.

INSTALACIÓN.

Un detalle a tomar muy en cuenta es que al momento de implementar este proyecto,

se utilizó la versión 2.2.6 de Pgpool-II, así que en varios comandos debe de cambiarse el

“2.2.6” por la versión utilizada por el usuario.

Primeramente instalamos los prerrequisitos (dependencias) para una correcta

instalación de Pgpool-II:

apt-get install make gcc-4.1 libpq5 libpq-dev

Ahora bien, primero descargamos pgpool-II, lo descomprimimos e instalamos en

“/opt/pgpool2”:

cd /usr/local/src

wget http://pgfoundry.org/frs/download.php/2478/pgpool-II-2.2.6.tar.gz

tar --extract --gzip --file pgpool-II-2.2.6.tar.gz

cd pgpool-II-2.2.6

./configure --prefix=/opt/pgpool2

make

make install

Recuerde que la forma de instalarlo puede variar pero, ya que normalmente es un

paquete que no se encuentra en repositorios, en la mayoría de casos se descarga y se

compila, que es el procedimiento presentado anteriormente.

Page 14: Bdd - Postgresql & Pgpool-II

14

ARCHIVOS DE CONFIGURACIÓN

PGPOOL-II.

Con una instalación exitosa procederemos a modificar los archivos

pcp.conf.sample y pgpool.conf.sample; para obtener estos archivos copie los archivos

de ejemplo y renómbrelos:

cp /opt/pgpool2/etc/pcp.conf.sample /opt/pgpool2/etc/pcp.conf

cp /opt/pgpool2/etc/pgpool.conf.sample /opt/pgpool2/etc/pgpool.conf

cp /opt/pgpool2/etc/pool_hba.conf.sample /opt/pgpool2/etc/pool_hba.conf

Para obtener la contraseña en MD5 ejecutamos el archivo ejecutable que se

encuentra en la siguiente ruta:

/opt/pgpool2/bin/pg_md5 <contraseña>

Y editamos el pcp.conf, para agregar la contraseña que obtuvimos anteriormente:

# Be aware that there will be no spaces or tabs at the

# beginning of the line! although the above example looks

# like so.

#

# Lines beginning with '#' (pound) are comments and will

# be ignored. Again, no spaces or tabs allowed before '#'.

###############################################################

# USERID:MD5PASSWD

# usuario pgpool

# contraseña pgpool

pgpool:ba777e4c2f15c11ea8ac3be7e0440aa0

###############################################################

Editamos el pgpool.conf, de manera que nos quede lo más parecido posible a la

configuración siguiente:

###############################################################

listen_addresses = '*'

port = 9999

pcp_port = 9898

socket_dir = '/var/run/postgresql'

pcp_socket_dir = '/var/run/postgresql'

backend_socket_dir = '/var/run/postgresql'

pcp_timeout = 10

num_init_children = 32

max_pool = 100

child_life_time = 300

logdir = '/var/run/postgresql'

pid_file_name = '/var/run/pgpool/pgpool.pid'

replication_mode = true

load_balance_mode = true

reset_query_list = 'ABORT; DISCARD ALL'

Page 15: Bdd - Postgresql & Pgpool-II

15

health_check_timeout = 20

health_check_period = 60

health_check_user = 'pgpool'

system_db_hostname = 'localhost'

system_db_port = 5432

system_db_dbname = 'pgpool'

system_db_schema = 'pgpool_catalog'

system_db_user = 'pgpool'

system_db_password = ''

backend_hostname0 = '172.1.1.2'

backend_port0 = 5432

backend_weight0 = 1

backend_data_directory0 = '/opt/PostgreSQL/8.4/data'

backend_hostname1 = '172.1.1.3'

backend_port1 = 5432

backend_weight1 = 1

backend_data_directory1 = '/opt/PostgreSQL/8.4/data'

backend_hostname2 = '172.1.2.3'

backend_port2 = 5432

backend_weight2 = 1

backend_data_directory2 = '/opt/PostgreSQL/8.4/data'

###############################################################

Cabe mencionar un par de puntos: Existen más opciones de configuración pero para

este proyecto utilizaremos las puestas en este documento y el número de configuración

“backend” aumentaría o disminuiría dependiendo del numero de servidores existentes a la

hora de crear una nueva implementación. Normalmente las carpetas /var/run/pgpool y

/var/run/postgresql no existen entonces se deben crear y poner permisos de escritura y

lectura para que el demonio de pgpool pueda crear y/o modificar el archivo pgpool.pid.

mkdir /var/run/pgpool

mkdir /var/run/postgresql

chmod –R 777 /var/run/pgpool

chmod –R 777 /var/run/postgresql

Procedemos ahora con la configuración del archivo pool_hba.conf:

############################################################### # "host" records. In that case you will also need to make pgpool listen

# on a non-local interface via the listen_addresses configuration

parameter.

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only

local all all trust

# IPv4 local connections:

host all all 127.0.0.1/32 trust

host all all 0.0.0.0/0 trust

###############################################################

Page 16: Bdd - Postgresql & Pgpool-II

16

La única configuración que cabe explicar es que por efectos didácticos se pone que

acepte conexiones de cualquier dirección, no obstante este valor se puede cambiar a

determinada red o porción de red, por motivos de seguridad.

POSTGRESQL.

Procedemos ahora con el archivo pg_hba.conf que se encuentra en

“/opt/PostgreSQL/8.4/data”:

############################################################### # If you want to allow non-local connections, you need to add more

# "host" records. In that case you will also need to make PostgreSQL

listen

# on a non-local interface via the listen_addresses configuration

parameter,

# or via the -i or -h command line switches.

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only

local all all md5

# IPv4 local connections:

host all all 127.0.0.1/32 md5

# IPv6 local connections:

host all all ::1/128 md5

#host all all 172.1.1.0/24 trust

#host all all 172.1.2.0/24 trust

#host all all 192.168.1.0/24 trust

host all all 0.0.0.0/0 trust

###############################################################

Ahora que tenemos todo configurado, crearemos un ejecutable que se inicie al

encender el servidor y usaremos el estándar de carga de archivos en Debian, colocando

nuestro archivo en la carpeta /etc/init.d/:

Procedemos con el archivo pg_hba.conf que se encuentra en la ruta

“/opt/PostgreSQL/8.4/data”:

############################################################### #! /bin/sh

PATH=/opt/pgpool2/bin:/sbin:/bin:/usr/sbin:/usr/bin

DAEMON=/opt/pgpool2/bin/pgpool

PIDFILE=/var/run/pgpool/pgpool.pid

case "$1" in

start)

echo iniciando demonio pgpool espere

/etc/init.d/postgresql-8.4 start

/opt/pgpool2/bin/pgpool -n &

sleep 3

;;

Page 17: Bdd - Postgresql & Pgpool-II

17

stop)

echo deteniendo el demonio pgpool espere

/opt/pgpool2/bin/pgpool stop

sleep 3

;;

restart)

echo reiniciando los servicios de pgpool

/etc/init.d/postgresql-8.4 restart

/opt/pgpool2/bin/pgpool stop

/opt/pgpool2/bin/pgpool -n &

sleep 3

;;

*)

echo error de comando pruebe: start, stop o restart

;;

esac

###############################################################

Ahora para que nuestro ejecutable se inicie al encender el servidor lo copiamos a la

carpeta /etc/init.d/ con permisos de súper-usuario del sistema y ejecutamos la siguiente

instrucción:

update-rc.d <archivo> defaults

Y con este último archivo finalizamos nuestra configuración, luego solamente nos

queda reiniciar el proceso de pgpool-II y comprobar nuestra implementación.

Iniciando como súper-usuario:

su – postgres

/opt/postgresql/8.4/bin/createdb –h [host] –p 9999 <nombre_base_de_datos>

Después de aplicar el comando anterior, debería de existir una base de datos idéntica

(respaldada) en cada uno de los servidores configurados mediante los pasos vistos a lo largo

de todo este documento.

Page 18: Bdd - Postgresql & Pgpool-II

18

GALERÍA DE IMÁGENES

DEBIAN GNU / LINUX.

Figura 1: Menú de Secuencia de Arranque dentro de la BIOS.

Figura 2: Menú de Arranque.

Figura 3: Inicio de la Instalación.

Figura 4: Selección del Lenguaje para el Proceso de Instalación.

Figura 5: Selección del Área Geográfica.

Page 19: Bdd - Postgresql & Pgpool-II

19

Figura 6: Configuración del Teclado.

Figura 7: Detección y Montaje de las Unidades de CD-ROM.

Figura 8: Análisis del Disco de Instalación.

Figura 9: Carga de Componentes Adicionales para la Instalación.

Figura 10: Detección de los Dispositivos de Red.

Figura 11: Configuración de la Red con DHCP (I).

Figura 12: Configuración de la Red con DHCP (II).

Figura 13: Configuración del Nombre de Equipo.

Page 20: Bdd - Postgresql & Pgpool-II

20

Figura 14: Configuración del Nombre de Dominio.

Figura 15: Detección de las Unidades de Almacenamiento y Dispositivos Restantes.

Figura 16: Inicio del Proceso de Particionado.

Figura 17: Método de Particionado a Utilizar.

Figura 18: Selección de la Unidad de Disco a Particionar.

Figura 19: Esquema de Particionado a Utilizar.

Page 21: Bdd - Postgresql & Pgpool-II

21

Figura 20: Cálculo de las Nuevas Particiones.

Figura 21: Resumen del Particionado a Implementar.

Figura 22: Aplicar Particionado.

Figura 23: Formateo de las Particiones Implementadas.

Figura 24: Configuración del Reloj.

Figura 25: Clave del Súper Usuario (I).

Page 22: Bdd - Postgresql & Pgpool-II

22

Figura 26: Clave del Súper Usuario (II).

Figura 27: Nombre Real del Nuevo Usuario.

Figura 28: Nombre de Usuario del Nuevo Usuario.

Figura 29: Clave del Nuevo Usuario (I).

Figura 30: Clave del Nuevo Usuario (II).

Figura 31: Instalación del Sistema Base (I).

Page 23: Bdd - Postgresql & Pgpool-II

23

Figura 32: Instalación del Sistema Base (II).

Figura 33: Configuración de APT (Análisis del CD-ROM).

Figura 34: Configuración de Uso de una Réplica en Red.

Figura 35: País de la Réplica (España).

Figura 36: Selección de la Réplica (España).

Figura 37: País de la Réplica (El Salvador).

Page 24: Bdd - Postgresql & Pgpool-II

24

Figura 38: Selección de la Réplica (El Salvador).

Figura 39: Configuración de Proxy HTTP.

Figura 40: Configuración de APT (Análisis de la Réplica Seleccionada).

Figura 41: Configuración de APT (Análisis del Repositorio de Seguridad).

Figura 42: Selección de Programas (I).

Figura 43: Configuración sobre Uso de Paquetes Populares.

Page 25: Bdd - Postgresql & Pgpool-II

25

Figura 44: Selección de Programas (II).

Figura 45: Selección de Programas (III).

Figura 46: Instalación de Programas (I).

Figura 47: Instalación de Programas (II).

Figura 48: Configuración del GRUB (I).

Figura 49: Configuración del GRUB (II).

Page 26: Bdd - Postgresql & Pgpool-II

26

Figura 50: Instalación del GRUB.

Figura 51: Fin de la Instalación.

Figura 52: Instalación Completa.

Figura 53: Reiniciar el Nuevo Sistema.

Figura 54: GRUB.

Page 27: Bdd - Postgresql & Pgpool-II

27

FUENTES DE CONSULTA

Todas las fuentes a continuación citadas fueron consultadas por última vez a las

4:30 P.M. el 14 de Junio de 2010.

Dawson, Terry; Drake, Joshua; Rubini, Alessandro. (1999). Linux

Networking−HowTo (Previously the Net-3 HowTo). (Versión 1.5).

http://www.tldp.org/docs.html#howto.

Equipo del Instalador de Debian. (2007). Guía de Instalación de Debian

GNU/Linux. http://www.debian.org/doc/.

Timme, Falko. (2007). The Perfect Setup – Debian Etch (Debian 4.0).

http://www.howtoforge.com/perfect_setup_debian_etch/.

Borgert, W. Martin. (2008). Tarjeta de Referencia para Debian GNU/Linux.

(Versión 5.0.1). http://www.debian.org/doc/ ó en http://tangosoft.com/refcard/.

Sabater, Jaume. (2008). Replicación y alta disponibilidad de PostgreSQL con

Pgpool-II. http://linuxsilo.net/articles/postgresql-pgpool.html.

Timme, Falko. (2009). The Perfect Server – Debian Lenny (Debian 5.0) [ISPConfig

2]. http://www.howtoforge.com/perfect-server-debian-lenny-ispconfig2/.

WebMaster PostgreSQL-es. (2009). Sobre PostgreSQL. http://www.postgresql-

es.org/sobre_postgresql/.

WebMaster PostgreSQL-es. (2009). Replicación y Alta Disponibilidad de

PostgreSQL con PgPool-II. http://www.postgresql-es.org/node/313/.

PostgreSQL Global Development Group. (2010). PostgreSQL 8.4 Documentation.

http://www.postgresql.org/docs/.

PgPool Global Development Group. (2010). ¿What is PgPool-II?.

http://pgpool.projects.postgresql.org/.