Creación: 11-06-2010
Índice de contenidos
1.Introducción
2. Entorno
3. Instalación
4. Conectándonos a PostgreSQL
5. Consiguiendo que PostgreSQL no se inicie automáticamente al arrancar el equipo
5.1. Iniciar y parar PostgreSQL de forma manual
6. Conclusiones
7. Sobre el autor
1. Introducción
PostgreSQL (http://www.postgresql.org/) es una base de datos open-source que puede competir perfectamente con otras bases de datos del mercado. Como ellos mismos dicen es un ORDBMS (object-relational database management system).
Desciende de código original de Berkeley. Soporta gran parte del estándar SQL y ofrece muchas características modernas:
- Consultas complejas.
- Claves ajenas.
- Triggers
- Vistas
- Integridad de transacciones.
- …
En este tutorial vamos a ver cómo instalar este gestor de bases de datos en un Mac OS X Snow Leopard.
2. Entorno
El tutorial está escrito usando el siguiente entorno:
- Hardware: Portátil MacBook Pro 17′ (2.93 GHz Intel Core 2 Duo, 4GB DDR3 SDRAM, 128GB Solid State Drive).
- NVIDIA GeForce 9400M + 9600M GT with 512MB
- Sistema Operativo: Mac OS X Snow Leopard 10.6.3
- PostgreSQL 8.4
3. Instalación
En la página web de PostgreSQL podemos encontrar varios métodos de instalación para Mac (http://www.postgresql.org/download/macosx):
- One click installer (instalador en un solo click)
- Fink (http://www.finkproject.org/)
- MacPorts (http://www.macports.org/)
Tanto Fink como MacPorts son sistemas de paquetes donde se han portado muchas aplicaciones open-source. Pero se requiere un poco más de configuración, por lo que el método elegido en este tutorial es el de One click installer, ya que es el más sencillo, y además ya nos instala algunas de las herramientas visuales para la gestión de la base de datos.
No tenemos más que pinchar el enlace y descargarnos el archivo dmg.
Una vez descargado lo abrimos y ejecutamos el fichero postgresql-8.4.4-1-osx que se encargará de la instalación. Este programita nos dará una advertencia sobre la configuración de los buffers de memoria del kernel. Esto no es imprescindible hacerlo, pero si recomendable para un buen rendimiento de la base de datos. Además es muy sencillo.
Así que antes de continuar con la instalación vamos a modificar
el fichero /etc/sysctl.conf
. Para ello podemos hacer:
$ sudo vim /etc/sysctl.conf
(esto nos abrirá el fichero si existe, o nos lo creará si no
existe)
Tenemos que asegurarnos de que tenemos los siguientes valores:
kern.sysv.shmmax=1610612736 kern.sysv.shmall=393216 kern.sysv.shmmin=1 kern.sysv.shmmni=32 kern.sysv.shmseg=8 kern.maxprocperuid=512 kern.maxproc=2048
Podemos encontrar más información sobre estos valores en
http://www.postgresql.org/docs/8.4/interactive/kernel-resources.html.
Y en el propio dmg que nos hemos descargado también podemos encontrar un fichero README
donde nos da explicaciones al respecto.
Una vez modificado el fichero, tenemos que reiniciar el sistema y ya podremos ejecutar de nuevo el fichero postgresql-8.4.4-1-osx, y seguir todo el proceso de instalación.
4. Conectándonos a PostgreSQL
Ahora que ya hemos terminado con la instalación vamos a usar una de las herramientas de gestión que se instalaron para comprobar que nos podemos conectar correctamente.
Abrimos pgAdmin III, y deberíamos ser capaces de navegar por el árbol de la izquierda:
5. Consiguiendo que PostgreSQL no se inicie automáticamente al arrancar el equipo
Normalmente cuando instalamos unas base de datos es porque queremos una base de datos 😉 Así que el instalador nos va a dar de alta el servicio para que se inicie automáticamente cada vez que arranque el ordenador.
Pero en determinadas ocasiones, no nos interesa que siempre se inicie el servicio; por ejemplo si sólo hemos hecho la instalación para hacer alguna prueba o para algún tema puntual de desarrollo.
Aquí vamos a ver como podemos hacer para que PostgreSQL no se inicie siempre, y seamos nosotros los que controlemos su arranque y parada de forma manual.
PostgreSQL está bajo el control de launchd
que es el encargado en el Mac de iniciar los servicios. Lo que vamos a hacer es editar el fichero
/Library/LaunchDaemons/com.edb.launchd.postgresql-8.4.plist
,
donde encontramos la definición de arranque de PostgreSQL:
$ sudo vim /Library/LaunchDaemons/com.edb.launchd.postgresql-8.4.plist
Deberíamos ver lo siguiente:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>Label</key> <string>com.edb.launchd.postgresql-8.4</string> <key>ProgramArguments</key> <array> <string>/opt/PostgreSQL/8.4/bin/postmaster</string> <string>-D/opt/PostgreSQL/8.4/data</string> </array> <key>RunAtLoad</key> <true/> <key>UserName</key> <string>postgres</string> <key>KeepAlive</key> <dict> <key>SuccessfulExit</key> <false/> </dict> </dict> </plist>
En este fichero vamos a modificar la etiqueta que viene justo después de <key>Disabled</key>
, de forma que cambiaremos (línea 7) <false/>
por <true/>
. Esta etiqueta al ponerla como true
hace que launchd
ignore este fichero de configuración durante el arranque. Así conseguimos que no se inicie automáticamente en el arranque del sistema.
5.1. Iniciar y parar PostgreSQL de forma manual
Ahora cuando queramos arrancar de forma manual el PostgreSQL, podemos hacer desde línea de comandos:
$ sudo launchctl load -F
/Library/LaunchDaemons/com.edb.launchd.postgresql-8.4.plist
El parámetro -F
indica precisamente que se ha de ignorar el valor del elemento <key>Disabled</key>
.
Cuando queramos parar la base de datos podemos hacer:
$ sudo launchctl unload
/Library/LaunchDaemons/com.edb.launchd.postgresql-8.4.plist
También es posible arrancar y parar la base de datos de forma visual con dos herramientas que se nos instalaron:
Podemos ver como tenemos un “Start Server” y un “Stop Server”.
6. Conclusiones
El mundo open-source cada vez está más de moda, y desde luego encontramos gran cantidad de soluciones que llevan entre nosotros mucho tiempo y que son muy robustas y estables como el caso de PostgreSQL. Además la gran ventaja de que en la mayoría de los
casos estos sistemas están migrados a gran cantidad de plataformas.
Por eso desde Autentia (http://www.autentia.com) siempre os animamos a usar este tipo de soluciones, sobre todo si son de la reputación y largo recorrido como el de PostgreSQL. Y si al final se os queda corto, siempre podéis saltar a una solución más cara 😉
7. Sobre el autor
Alejandro Pérez García, Ingeniero en Informática (especialidad de Ingeniería del Software) y Certified ScrumMaster
Socio fundador de Autentia (Formación, Consultoría, Desarrollo de sistemas transaccionales)
mailto:alejandropg@autentia.com
Autentia Real Business Solutions S.L. – «Soporte a Desarrollo»
Una nota para los usuarios de Mac OS X Lion.
El instalador finaliza con un error del tipo \\\»Problem running post-install step. Installation may not complete correctly
The database cluster initialisation failed.\\\». Revisando el proceso de instalación, vemos que parece que nos ha instalado todo en \\\»/Library/PostgreSQL/9.0\\\» (en mi caso estaba instalando la versión 9.0.4-1) pero que falta el directorio \\\»data\\\»; también falta el usuario postgres.
Como \\\»workaraound\\\» hasta que se tenga un instalador completamente funcional, antes de lanzar la instalación, es necesario crear el usuarios postgres. Una vez creado, lanzamos la instalación y ésta termina correctamente.
saludos.