Trabajaremos con pgadmin y con consola.
Resulta que las bases de datos postgres que existen en el servidor (Sercartlin) guardan los datos en el tablespace que hay por defecto (pg_default) lo cual implica por lo general que vayan a parar a /var, y dicha partición está ya al 93% de ocupación. Lo correcto es guardar cada base de datos a un tablespace propio. Tenemos en el servidor una partición /pgdata pensada para esto. Dentro de dicho directorio hemos de crear un directorio con el nombre del futuro tablespace.
El proceso es el siguiente:
dentro de /pgdata crearemos un directorio por cada tablespace que queramos añadir.
Ejemplos:
tbs_bdgis (donde se guardará una base de datos llamada bdgis)
tbs_jabamu (donde se guardará una base de datos llamada jabamu)
etc.
Vamos a consola y ejecutamos la orden
pg_dump basedatos > fichero.out
Quizá tengamos que incluir la opción -U para indicar el usuario que conecta a la bd, y podemos poner la opción -Ft para obligar a que cree el fichero .out (o .sql o como queramos) en formato .tar.
En pgadmin, dentro de la máquina que nos interese, vamos al apartado tablespaces y creamos un nuevo tablespace que apunte al directorio que hemos creado. anteriormente.
Una vez acabe podemos borrar la base de datos de la que ya hemos hecho copia de respaldo y volver a crearla con el mismo nombre y características pero indicando el tablespace nuevo.
Por último ejectuamos
psql -f fichero.out (-U usuario si procede)
Esto nos añadirá todos los datos de la tabla. POR COMPROBAR QUE REALMENTE LA BASE DE DATOS TIENE EL NUEVO TABLESPACE.
Otra manera de hacer todo esto (usando pg_restore):
- pg_dump -Ft basedatos > basedatos.tar
- Borramos la bd y la creamos de nuevo con el tablespace nuevo
- pg_restore -d basedatos basedatos.tar
miércoles, 16 de enero de 2008
Cambiar una base de datos postgres a un tablespace distinto
Etiquetas:
linux,
pg_dump,
pg_restore,
pgadmin,
postgres,
tablespace
Suscribirse a:
Enviar comentarios (Atom)

No hay comentarios:
Publicar un comentario