kon*_*ify 13 postgresql postgresql-9.3
有没有办法将 PostgreSQL 9.3 表空间从 物理移动/old/dir
到/new/dir
?我只想找到mv
目录并告诉 PostgreSQL 表空间现在位于/new/dir
. 看起来ALTER TABLESPACE
只能让你重命名。
我想避免创建一个新的表空间并将数据库移动到它。我认为这将是一个需要大量时间和磁盘空间的缓慢复制过程。我也想避免符号链接/old/dir
到/new/dir
.
shx*_*shx 15
我假设您的表空间名称是tblspc
.
test=# SELECT oid,spcname FROM pg_tablespace WHERE spcname = 'tblspc'; 类 | 名称 -------+--------- 24580 | 表 (1 行)
$ pg_ctl -D $PGDATA 停止
$ mv /旧/目录/新/目录
或者
$ cp -r /old/dir /new/dir $ rm -rf /旧/目录
$ cd $PGDATA/pg_tblspc $ rm 24580 $ ln -s /new/dir 24580
$ pg_ctl -D $PGDATA 开始
然后,您可以看到表空间的目录已更改。
测试=# SELECT pg_tablespace_location(24580); pg_tablespace_location ------------------------ /新/目录 (1 行)