¿Cómo muevo un espacio de tabla PostgreSQL?


12

¿Hay alguna forma de mover físicamente un espacio de tabla PostgreSQL 9.3 de /old/dira /new/dir? Me gustaría solo mvel directorio y decirle a PostgreSQL que el espacio de tabla ahora está ubicado en /new/dir. Parece que ALTER TABLESPACEsolo te permite cambiar el nombre.

Me gustaría evitar crear un nuevo espacio de tabla y mover la base de datos a él. Supongo que sería un proceso de copia lento que requiere mucho tiempo y espacio en disco. También quiero evitar simular /old/dircon /new/dir.


mover / old / dir a veryold / dir, montar new / dir a old / dir, copiar datos de ver_old dir a old / dir?
simplexio

Respuestas:


12

Supongo que su nombre de tablespace es tblspc.

  1. Deshazte de tu espacio de tabla
test = # SELECT oid, spcname FROM pg_tablespace WHERE spcname = 'tblspc';
  oid | spcname
------- + ---------
 24580 | tblspc
(1 fila)
  1. Deja de postgres
$ pg_ctl -D $ PGDATA stop
  1. Mover el directorio del antiguo al nuevo
$ mv / antiguo / dir / nuevo / dir

o

$ cp -r / old / dir / new / dir
$ rm -rf / old / dir
  1. Cambiar el enlace del espacio de tabla al nuevo directorio
$ cd $ PGDATA / pg_tblspc
$ rm 24580
$ ln -s / nuevo / dir 24580
  1. Iniciar postgres
$ pg_ctl -D $ PGDATA inicio

Luego, puede ver que el directorio del espacio de tabla ha cambiado.

prueba = # SELECCIONAR pg_tablespace_location (24580);
 pg_tablespace_location
------------------------
 / nuevo / dir
(1 fila)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.