表空间的创建
选取一个物理位置,注意postgres有全部权限。
create tablespace my_tablespace_name location '/data/pg_tbs/';
不应该在$PGDATA目录创建表空间,如果创建了,repmgr在配置高可用的时候,可能会出现问题,其他的高可用插件不知道会不会。我们一定要单独放在一个空间较大的位置上。
在表空间之间迁移对象
例如迁移数据库mydb 到另外一个表空间。
alter database mydb set tablespace my_tablespace_name;
如果移动一张表
alter table mytable set tablespace my_tablespace_name;
一次性的把一个表空间的多个对象迁移到另外一个表空间,如果命令执行者是超级用户,那么源空间所有对象都会被迁移过去,否则会迁移所执行这所属的对象。
将pg_default 默认表空间对象中的所有对象迁移到my_tablespace_name表空间,
alter tablespace pg_default move all to my_tablespace_name;
迁移过程中所涉及的database和表都会被锁定。