Restaurar copia de seguridad de base de datos geoespacial con PostgreSQL y PostGIS

¡Buenas de nuevo!

Como ya comenté en la entrada donde se explicaba cómo realizar una copia de seguridad de una base de datos geoespacial con PostgreSQL y PostGIS, el siguiente paso sería explicar cómo restaurar esta copia que hemos realizado para poder trabajar con ella. read more

Leer más » 2 Comentarios

Hacer copia de seguridad de base de datos geoespacial con PostgreSQL y PostGIS

¡Buenas a tod@s!

Esta vez vamos a explicar los pasos a seguir para hacer una copia de seguridad de una base de datos de tipo geoespacial a través de la línea de comandos. En la siguiente entrada hablaremos de cómo restaurarla.

Supongo que estas mismas instrucciones son las que usaremos con cualquier tipo de base de datos PostgreSQL, pero en mi caso, sólo lo he comprobado con bases de datos espaciales, para las cuales os puedo asegurar que funcionan a la perfección. read more

Leer más » 5 Comentarios

Almacenamiento y tratamiento de datos geolocalizados en PostgreSQL con PostGIS

¡Buenas a tod@s!

Hoy voy a explicar una operación básica pero necesaria para almacenar y  tratar con datos geolocalizados. Siguiendo un poco el hilo del tutorial, ya tenemos nuestra base de datos PostgreSQL con el módulo PotGIS creada, así como creada nuestra tabla con el tipo de dato espacial haciendo uso del SRID 4326, por lo que ahora vamos a ver cómo se almacena un punto, definido por su longitud y su latitud, en ella. read more

Leer más » 3 Comentarios

Base de datos espacial con PostgreSQL-PostGIS: spatial_ref_sys y SRID

Buenas!

Como ya comenté, tenía pendiente una entrada para hablar sobre dos conceptos que han aparecido y que resultan de gran interés para escribir sobre ellos. Hablamos de la tabla spatial_ref_sys y de SRID.

Comencemos por la tabla spatial_ref_sys que como ya vimos , se genera automáticamente en nuestra base de datos cuando la hacemos de tipo espacial. El formato de esta tabla es el siguiente:

tabla spatial_ref_sys pgAdmin

Las columnas que aparecen dentro de la misma son:

  • SRID: Es un identificador del sistema de referencia espacial (SRS – Spatial Referencing System), y es usado para identificar de forma única el sistema de coordenadas que vamos a usar en nuestra base de datos.
  • AUTH_NAME: Es el nombre del estándar para el sistema de referencia. Por ejemplo: EPSG.
  • AUTH_SRID: El identificador según el estándar AUTH_NAME. En el ejemplo anterior es el código según EPSG.
  • SRTEXT: Una Well-Know text representación para el sistema de referencia especial. Para un listado proyecciones EPSG y su correspondiente representación WKT, podemos acceder a la página http://www.opengeospatial.org/
  • PROJ4TEXT: Proj4 es una librería que usa PostGIS para transformar coordenadas. Esta columna contiene una cadena con definición de las coordenadas de Proj4 para un SRID dado.

Algunos de los valores de SRID de la EPGS  más conocidos son: 4326- WGS 84 Long Lat que es el sistema que habitualmente usan los GPS, o 3857 – WGS84 usado por Google Maps u OpenStreetMap. Lo más importante es trabajar siempre con el mismo SRID, ya que si realizamos operaciones con objetos que tienen diferente SRID, el resultado será erróneo. read more

Leer más » 1 Comentario

Cómo crear una tabla con datos geoespaciales en Postgis y PostgreSQL

Buenas a tod@s 🙂

Siguiendo un poco el hilo de los posts anteriores, ya tenemos instaladas todas las tecnologías que vamos a necesitar y ya hemos creado una base de datos de tipo espacial . Ahora, se trata de poder almacenar puntos geolocalizados dentro de nuestra base de datos.

¿Cuál es el siguiente paso que debemos dar?

Lo primero será crear una tabla en nuestra base de datos, que será la tabla que albergará el tipo de dato geolocalizado. Para ello, basta con hacer clic derecho en el Explorador de objetos en la zona de nuestra base de datos creada, y darle a Nueva tabla. En las siguientes imágenes vemos la información que será necesario rellenar sobre la propiedad y definición, que como podréis observar es la misma que indicábamos al crear la base de datos. read more

Leer más » 6 Comentarios

Cómo crear una bbdd espacial en PostgreSQL desde PgAdmin

Buenas de nuevo 🙂

Hoy voy a seguir con una explicación muy sencilla sobre cómo crear una base de datos de tipo espacial es PostgreSQL desde pgAdmin. Os lo mostraré mediante imágenes, paso por paso, aunque realmente ya veréis que es muy intuitivo.
Primeramente hacemos clic derecho en el Explorador de objetos de la izquierda, y damos a Nueva Base de Datos. Nos aparecerá una ventana como la que se muestra a continuación, donde indicaremos el nombre y el propietario.
crear nueva base de datos pgAdminY ¿cómo hacemos que esta base de datos sea de tipo espacial? Para ello, bastará con indicar la plantilla que definimos durante la instalación dentro de la pestaña Definición tal y como se muestra en la siguiente imagen, dentro del apartado Plantilla (en mi caso el nombre que le puse fue “template_postgis”, de todos modos el selector te lo sugerirá) read more

Leer más » 9 Comentarios

Instalación de PostGIS para PostgreSQL

Cada vez son más las aplicaciones que hacen uso de localizaciones dentro de su funcionamiento y que además, necesitan almacenarlas de alguna forma dentro de su base de datos. Es entonces cuando PostgreSQL toma ventaja frente a MySQL gracias a la existencia de PostGis.
PostGIS

PostGis es un software libre, tiene licencia GNU General Public License (GPL), convierte nuestra base de datos PostgreSQL en una base de datos espacial capacitada para almacenar y trabajar con datos espaciales.

La instalación es muy sencilla, esta que indico aquí es la que usé en local y en un servidor en producción con Ubuntu 12.04, supongo que en versiones posteriores será similar con algún cambio en las versiones de paquetes pero diría que la mecánica es la misma, pero si tenéis alguna duda preguntad en comentarios y lo vemos entre todos.

Instalamos los paquetes:

sudo apt-get install python-software-properties
sudo apt-add-repository ppa:ubuntugis/ppa
sudo apt-get update
sudo apt-get install postgresql-9.1-postgis
sudo apt-get install build-essential postgresql-9.1 postgresql-server-dev-9.1 libxml2-dev proj libjson0-dev xsltproc docbook-xsl docbook-mathml gettext postgresql-contrib-9.1 pgadmin3
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:olivier-berten/geo
sudo apt-get update
sudo apt-get install libgdal-dev

Una vez realizadas estas instalaciones, verficamos la versión de libGDAL, que debe ser 1.9.0

$ gdal-config --version 1.9.0 read more

Leer más » 12 Comentarios

Xeopesca, un software libre que permite conocer los puntos con mayor probabilidad de pesca del día

La Agencia para la Modernización Tecnológica de Galicia (Amtega) concedió el Premio al Mejor Proyecto Fin de Carreira con Licencia Libre 2013 a Pablo Belay por el proyecto Xeopesca.

XeoPesca

xeoPesca es una aplicación web que permite crear un registro de las faenas pesqueras y asociarlas a las variables meteorológicas y geográficas que más influyen en el comportamiento de los ser marinos. Esto convierte la aplicación en un compendio de la experiencia pesquera que puede ser de gran valor para los patrones de los barcos, que sabrán cuáles son los puntos con mayor probabilidad de pesca en función de las condiciones meteorológicas de cada día. read more

Leer más » 2 Comentarios

Rubyrep (replicación de base de datos que no lastima)

Hola, quería aportar contenido sobre una interesante herramienta para implementar replicación de base de datos (para postgres y mysql). Me tope con ésta herramienta hace unos días, cuando estaba buscado información/soporte para utilizar Slony-I (herramienta de replicación para PostgreSQL). Resulta ser una solución muy buena, fácil de implementar y relativamente simple. (en comparación con Slony-I). Está escrita en JRuby, lo cual la hace independiente de la plataforma (donde corra Java, lo hará ésta herramienta).

Características principales:

  • open-source
  • Replicación asincrónica, Master-Maste, Master-Slave.
  • Muy fácil de utilizar y configurar (a través de archivos .conf muy sencillos de entender).
  • Independiente del motor de base de datos (actualmente soporta Postgresql y MySql).
  • Puede escanear dos bases de datos en busca de diferencias.
  • Puede sincronizar dos bases de datos.
  • Puede replicar continuamente entre dos bases de datos.

Leer más » 1 Comentario

Eliminar PostgreSQL del arranque

Hace unos días instale un servidor con Debian y por comodidad dejé que algunos paquetes se instalaran por defecto. Mejor o no, esa no es la cuestión. Ahora tengo paquetes que son servicios, que están instalados en mi sistema y que quiero evitar que se ejecuten en cada arranque. No quiero eliminarlo, es posible que en un futuro desee usarlos.

Sí, en cada inicio podría detenerlo, incluso podría poner en el cron una tarea que lo hiciera de manera automática, pero eso me parece “una chapuza” pudiéndolo hacer de una manera más limpia. A modo de ejemplo, veremos en esta entrada cómo detener el servicio de PostgreSQL. Si quisiéramos hacer manualmente bastaría con:

root@6581-Server:~# /etc/init.d/postgresql stop

Nos podría servir, pero no es lo que queremos. Para eliminar completamente PostgreSQL del arranque nos serviremos de chkconfig8. Lo primero que vamos a hacer es instalarlo, para ello (y como superusuario):

root@6581-Server:~# apt-get install chkconfig

Para ejecutarlo, es sencillo. El paquete se nombra igual que el programa (también como superusuario):

root@6581-Server:~# chkconfig

Con esto, y sin ningún parámetro, obtenemos la lista de servicios y su estado:

acpid on
apache2 on
atd on
bootlogd on
bootlogs on
bootmisc.sh on
checkfs.sh on

Leer más » 6 Comentarios

PostgreSQL no arranca: “Fatal: bogus data in lock file ‘postmaster.pid'”

A raíz de un problema en la consistencia del sistema de ficheros de un servidor virtual que ejecuta PostgreSQL, he tenido que ejecutar un fsck. Tras recuperar la consistencia todos los servicios han salido andando sin problema menos el de PostgreSQL.

PostgreSQL logo

Intentaba arrancarlo con:

service postgresql start

Y nada de nada, siempre aparecía el mensaje de “FALLÓ”. Me dirigí a los logs de arranque en mi caso se encuentran en: /var/lib/pgsql dentro del fichero pgstartup.log. Tras hacerle un tail compruebo que aparece el siguiente error en el arranque:

Leer más » 4 Comentarios

Programar copias de seguridad automáticas de PostgreSQL

Si hace unos días hablábamos de cómo hacer backup y restaurar copias de seguridad con MySQL, hoy vamos a hablar de cómo hacerlo con PostgreSQL, incluyendo un detalle más: la automatización para que se ejecute de forma periódica y automática.

pg_dump

Si con MySQL usamos mysqldump, con PostgreSQL utilizamos pg_dump. ¿Cuál es la sintaxis básica? read more

Leer más » 6 Comentarios

Permitir conexiones entrantes a un servidor PostgreSQL

Para los que venimos del mundo de MySQL y nunca antes hemos utilizado PostgreSQL, la configuración de los accesos externos a la base de datos puede parecernos algo confusa. El mecanismo, sin entrar en la tabla de gestión de usuarios, es algo más complejo pero tiene más posibilidades que en la base de datos recién adquirida por Oracle.

Veamos los pasos a dar.

1. Acceder al sistema

Para poder seguir los pasos, deberemos estar dentro del sistema, en la terminal del mismo. Si no tenemos acceso físico, podemos conectar vía ssh.

$ ssh miusuario@miservidorpgsql

2. Autenticarnos como usuario postgres

Una vez dentro del sistema, podemos hacer las operaciones como root, pero por seguridad o por si no disponemos de tales credenciales, lo mejor es actuar como usuario postgres:

su postgres

3. Permitir conexiones de clientes desde un determinado rango

Llegamos a uno de los puntos importantes de la cuestión, el fichero pg_hba.conf. Su situación exacta dependerá de vuestra instalación, pero lo encontraréis en una de estas dos rutas:

  • /var/lib/pgsql/data/pg_hba.conf (en mi instalación lo tengo ahí, utilizo Scientific Linux, una distribución derivada de Red Hat)
  • /etc/postgresql/main/pg_hba.conf

Dentro de este fichero, al final del mismo, veremos algo así:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
# IPv6 local connections:
host    all         all         ::1/128               password

¿Qué significa esto? Veamos columna a columna:

  • Tipo: básicamente conexión local o conexión remota (host).
  • Base de datos: base de datos a las que afecta la regla. Si queremos todas, usamos el comodín all.
  • Usuario: usuarios a los que afecta la regla, si queremos que afecte a todos, usamos también all.

Nos paramos ahora en los dos apartados que más atención requieren.

3.a Dirección

En esta columna definimos, las direcciones IP (podemos también usar IPv6), desde las que podremos conectarnos a PostgreSQL. Usaremos la fórmula dirección/máscara:

  • Una sola dirección: 150.100.100.100/32
  • O un rango (ampliemos el mismo de antes): 150.100.100.0/24 (256 direcciones)

3.b Método

Aunque hay multitud de métodos para utilizar (incluyendo conexiones LDAP, Kerberos o PAM), explico los tres más básicos:

  • ident: utiliza el usuario del sistema desde el que se está intentado conectar.
  • trust: deja todos los accesos sin necesidad de autenticarse (sólo recomendable para conexiones desde el equipo local).
  • password: identificación con usuario/contraseña, es la más típica y es la recomendable para conexiones desde clientes como EMS PostgreSQL Manager.

Una línea de ejemplo, para darle acceso a todos los usuarios, a todas las base de datos, desde el rango de IP explicado antes, usando autenticación con usuario y contraseña, sería la siguiente:

host    all         all         150.100.100.0/24          password

4. Habilitar conexiones al socket desde clientes que no sean el host local

Al igual que en MySQL hay que configurar el bind-adress en my.conf, en PostgreSQL tenemos que hacer algo análogo.

Para versiones 8.x en adelante el procedimiento es el siguiente. Buscamos el fichero postgresql.conf en:

  • /var/lib/pgsql/data/postgresql.conf
  • /etc/postgresql/8.2/main/postgresql.conf

Y buscar dentro del mismo la siguiente línea:

listen_addresses='localhost'

Para sustituirla, por el comodín (para todas las IP, es una opción segura, tened en cuenta que tenemos también un filtro en el fichero pg_hba.conf.

listen_addresses='*' read more

Leer más » 10 Comentarios