Instalar PostgreSQL en Mac OS X Snow Leopard

1
26178

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):

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»

http://www.autentia.com

 

Alejandro es socio fundador de Autentia y nuestro experto en Java EE, Linux y optimización de aplicaciones empresariales. Ingeniero en Informática y Certified ScrumMaster. Seguir @alejandropgarci Si te gusta lo que ves, puedes contratarle para darte ayuda con soporte experto, impartir cursos presenciales en tu empresa o para que realicemos tus proyectos como factoría (Madrid). Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación.

1 COMENTARIO

  1. 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.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad