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 --versionEn 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
psql (PostgreSQL) 8.1.17
incluye soporte para edición de línea de comandos
# su - postgresUna vez verificado aclarado el tema de las versiones y la importancia de asignar correctamente el PATH, PGDATA y POSTGRES_HOME, continuaremos
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
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 willAsí 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.
be overwritten by package or patch operations, including
operating system upgrade. Make customizations in a different
file.
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/Deberemos sustiuir los valores de <property_group> en ambas instancias, es decir <default_64bits> y <default_32bits> por los siguientes:
# cat postgresql_83.xml > postgresql_84.xml
# vi postgresql_84.xml
:%s/postgresql_83/postgresql_84/
:%s/postgres_83/postgres_84/
- 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
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_84El 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í
# chmod +x /lib/svc/method/postgres_84
# chown root:bin /lib/svc/method/postgres_84
case "$1" inDesde aquí puedes descargarte el archivo completo PostgreSQL Method
'start')
check_data_dir
$PGBIN/pg_ctl -D $PGDATA -l $PGLOG start
;;
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>
# svccfgActivamos el servicio y comprobamos el archivo de log de PostgreSQL que hemos ubicado en /var/log/postgres
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
# svcadm enable postgresql_84:default_64bitComprobamos que nuestro servidor funciona correctamente, para ello, nos conectaremos con el cliente de PostgreSQL del sistema, recordar la primera parte sobre las versiones.
# 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
# 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