SafeChildren Banner

Havoc Oracle Solaris Experts

miércoles, 2 de diciembre de 2009

Instalación de PostgreSQL 8.4 en Solaris 10 64bits - Parte 2

Introducción
En la primera parte de Instalación de PostgreSQL en Solaris 10, vimos como realizar los primeros pasos e iniciar la base de datos de PostgreSQL. En esta ocasión, vamos a ver cómo podemos utilizar el framework SMF para poder gestionar el inicio/parada/reconfiguración de PostgreSQL 8.4 utilizando los comandos svcadm enable/disable/restart

UPDATED: Si quieres puedes ir a Cómo Instalar PostgreSQL 9.x en OpenIndiana, un post más actualizado sobre el proceso de instalación en el nuevo sistema operativo sucesor de OpenSolaris

Un Recordatorio Rápido
Solaris 10 tiene incluida las versione 8.1 y 8.3 de PostgreSQL en su core por eso, para comprobarlo realizaremos los siguientes pasos:
# which psql
/usr/bin/psql
# /usr/bin/psql --version
psql (PostgreSQL) 8.1.17
incluye soporte para edición de línea de comandos
En esta instalación de Solaris, el binario de psql es de la versión 8.1.17, por eso asignábamos en el profile del usuario postgres su PATH como $POSTGRES_HOME/bin en primer lugar, vamos a comprobarlo ahora desde el usuario postgres
# su - postgres
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005

POSTGRES VERSION: 8.4
POSTGRES HOME   : /u01/app/postgres/8.4/db
PGDATA          : /var/postgres/8.4/data
PGARCH          : 64
$ which psql
/u01/app/postgres/8.4/db/bin/64/psql
$ psql --version
psql (PostgreSQL) 8.4.1
incluye soporte para edición de línea de órdenes
Una vez verificado aclarado el tema de las versiones y la importancia de asignar correctamente el PATH, PGDATA y POSTGRES_HOME, continuaremos

Creación del Archivo de descripción (Manifest)
Como hemos comentado, Solaris ofrece soporte para PostgreSQL y por ello, en el directorio /var/svc/manifest/application/database podemos encontrar los manifest para PostgreSQL 8.1,8.2 y 8.3. Éstos son dependientes del Sistema Operativo, y por lo tanto, no podemos modificar la estructura ya que al actualizar mediante algún parche, ésta puede ser modificada sin previo aviso, como indica el comentario del xml
NOTE:  This service manifest is not editable; its contents will
be overwritten by package or patch operations, including
operating system upgrade.  Make customizations in a different
file.
Así que para evitar sorpresas vamos a utilizar el manifest de PostgreSQL 8.3 y vamos a crearnos uno nuevo postgresql_84 en el cual podamos hacer nuestros ajustes sin temor a que en un parche nos modifiquen los descriptores.

Preparación del Entorno para SMF
Vamos a crear el descriptor postgresql_8.4.xml utilizando el archivo postgresql_83.xml y modificaremos las entradas que hagan referencia a <postgresql_83> por <postgresql_84>, posteriormente crearemos un nuevo method de ejecución partiendo de /lib/svc/method/postgres_83, veamos los pasos:
# cd /var/svc/manifest/application/database/
# cat postgresql_83.xml > postgresql_84.xml
# vi postgresql_84.xml 

     :%s/postgresql_83/postgresql_84/
     :%s/postgres_83/postgres_84/
Deberemos sustiuir los valores de <property_group> en ambas instancias, es decir <default_64bits> y <default_32bits> por los siguientes:
  • Propiedad <bin> /u01/app/postgres/8.4/db/bin para 32bits y /u01/app/postgres/8.4/db/bin/64 para 64bits
  • Propiedad <data> /var/postgres/8.4/data
  • Propiedad <log> /var/log/postgres/server.log
Desde aquí puedes descarte el archivo completo de PostgreSQL Manifest

Ahora vamos a hacer lo mismo con el archivo method, partiendo de /lib/svc/method/postgres_83 y sustituyendo las entradas de postgresql_83 por postgresql_84
# cat /lib/svc/method/postgres_83 > /lib/svc/method/postgres_84
# chmod +x /lib/svc/method/postgres_84
# chown root:bin /lib/svc/method/postgres_84
El métdodo start vamos a modificarlo para asignar el path del archivo de log de forma absoluta en vez de relativa a PGDATA como está en Solaris, por lo tanto, nuestro método quedaría así
case "$1" in
'start')
        check_data_dir
        $PGBIN/pg_ctl -D $PGDATA -l $PGLOG start
        ;;
Desde aquí puedes descargarte el archivo completo PostgreSQL Method

Importación y Activación del Nuevo Servicio
Vamos a importar el nuevo manifest utilizando svccfg como en otras ocasiones y para comprobarlo svcs <frmi>
# svccfg
svc:> validate /var/svc/manifest/application/database/postgresql_84.xml
svc:>  import /var/svc/manifest/application/database/postgresql_84.xml
svc:> quit
# svcs postgresql_84
STATE          STIME    FMRI
disabled       12:20:05 svc:/application/database/postgresql_84:default_64bit
disabled       12:20:05 svc:/application/database/postgresql_84:default_32bit
Activamos el servicio y comprobamos el archivo de log de PostgreSQL que hemos ubicado en /var/log/postgres
# svcadm enable postgresql_84:default_64bit
# svcs postgresql_84:default_64bit
STATE          STIME    FMRI
online         12:27:59 svc:/application/database/postgresql_84:default_64bit
# tail -f /var/log/postgres/server.log
LOG:  el sistema de bases de datos fue apagado en 2009-12-01 23:45:10 CET
LOG:  lanzador de autovacuum iniciado
LOG:  el sistema de bases de datos está listo para aceptar conexiones
^C
Comprobamos que nuestro servidor funciona correctamente, para ello, nos conectaremos con el cliente de PostgreSQL del sistema, recordar la primera parte sobre las versiones.

# psql -U postgres
Contraseña para usuario postgres:
Bienvenido a psql 8.1.17 (servidor 8.4.1), la terminal interactiva de PostgreSQL.

Digite:  \copyright para ver los términos de distribución
       \h para ayuda de comandos SQL
       \? para ayuda de comandos psql
       \g o or termine con punto y coma para ejecutar una consulta
       \q para salir

ATENCION:  usted está conectado a un servidor con versión major 8.4,
pero su cliente psql es versión major 8.1.  Algunos comandos backslash,
tales como \d, pueden no funcionar adecuadamente.

postgres=# \q

Nota Importante Sobre el Manifest
El archivo postgresql_84.xml que hemos editado comparte $PGDATA esto es debido a que yo personalmente sólo utilizo una de las dos versiones en la misma máquina, es decir, o la de 32bits o la de 64bits. Si quieres tener ese funcionamiento, debes tener dos PGDATA uno para 32 y otro para 64


<< Cómo Instalar PostgreSQL 8.4 64bits en Solaris 10 - Parte 1

Conclusiones
Hemos visto como Solaris nos proporciona gran parte del trabajo para incluir PostgreSQL en nuestro sistema de control SMF con una pequeña adaptación y por supuesto, ya tenemos la gestión de arranque y parada unificada utilizando svcadm


En las siguientes entregas vamos a ver cómo continuar con la configuración de PostgreSQL en temas de WAL, Backup and Recovery, hasta entonces ... toca esperar



Referencias

No hay comentarios:

Publicar un comentario