Existe-t-il un moyen de déplacer physiquement un espace de table PostgreSQL 9.3 de /old/dir
à /new/dir
? Je voudrais simplement mv
le répertoire et dire à PostgreSQL que l'espace disque logique est maintenant situé à /new/dir
. Ressemble à ALTER TABLESPACE
vous permet uniquement de renommer.
Je voudrais éviter de créer un nouvel espace disque logique et d'y déplacer la base de données. Je suppose que ce serait un processus de copie lent qui nécessite beaucoup de temps et d'espace disque. Je veux également éviter les liens symboliques /old/dir
à /new/dir
.
Je suppose que votre nom d'espace de table est tblspc
.
test = # SELECT oid, spcname FROM pg_tablespace WHERE spcname = 'tblspc'; oid | nom_spc ------- + --------- 24580 | tblspc (1 ligne)
$ pg_ctl -D $ PGDATA stop
$ mv/old/dir /new/dir
ou
$ cp -r/old/dir /new/dir[.______________$$ rm -rf /old/dir
$ cd $ PGDATA/pg_tblspc $ rm 24580 $ ln -s/new/dir 24580
$ pg_ctl -D $ PGDATA start
Ensuite, vous pouvez voir que le répertoire du tablespace a changé.
test = # SELECT pg_tablespace_location (24580); pg_tablespace_location ------------------------ /new/dir[.____.[(1 ligne)