miércoles, 13 de febrero de 2013

Cambiar TABLESPACE en #postgresql

Cambiar el TABLESPACE en postgresql

Luego de optimizar un poco mi servidor de base de datos siguiendo el articulo de phenobarbital, me encontré en la situación de como cambiar mi base de datos ya existente para que utilizara el nuevo TABLESPACE definido en otra partición del disco.
Buscando en Internet, vi usuarios que aplicaron complejos scripts en PHP y demás. realmente no me convencían mucho, pero es una alternativa, así que pensé en hacerlo de otra manera
  1. Hacer un pg_dump de la base de datos (de todas formas tenía que hacerlo para efectos de respaldos).
  2. Hacer drop de la base de datos.
  3. crear la base de datos utilizando el nuevo tablespace: CREATE DATABASE nombre TABLESPACE=tablespace.
  4. Hacer un restore en la nueva base de datos
Para ello realicé con éxito un par de pruebas, y cuando ya me disponía hacerlo en la base de datos en producción pensé: ¿no existirá algún comando en postgres que haga esto por mí?
Así que con un simple "search" en la documentación de postgres me encontré que esto se logra con un solo comando:
ALTER DATABASE nombre SET TABLESPACE tablespace
Por lo menos desde la versión 8.4 lo hace (sinceramente no busqué otras versiones).
Para más información pueden consultarlo en la documentación de postgresql aunque sinceramente no hay mucho que decir de esta sintaxis, fuera de los complicados scripts que encontré en Internet, este comando se encarga de mover indices y demás información al nuevo tablespace.

1 comentario: