环境:
OS:Centos 7
DB:13.8
1.创建新表空间自定义目录
su - postgres
[postgres@host134 pg13]$ mkdir -p /opt/pg13/mytps01
2.创建表空间
postgres=# create tablespace hxltps01 location '/opt/pg13/mytps01';
CREATE TABLESPACE
3.将数据库迁移到新的表空间(迁移期间不能对表有dml ddl操作)
postgres=# alter database db_test set tablespace hxltps01;
ERROR: database "db_test" is being accessed by other users
DETAIL: There is 1 other session using the database.
杀掉会话:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'db_test';
select datname from pg_stat_activity;
这个时候pg_tblspc目录会生成一个新的链接符,指向mytps01的
[postgres@host134 pg_tblspc]$ ls -al
total 4
drwx------ 2 postgres postgres 32 Oct 26 16:42 .
drwx------ 19 postgres postgres 4096 Oct 26 10:25 ..
lrwxrwxrwx 1 postgres postgres 15 Oct 26 10:25 32780 -> /opt/pg13/mytps
lrwxrwxrwx 1 postgres postgres 17 Oct 26 16:42 40973 -> /opt/pg13/mytps01
4.删除旧的表空间
postgres=# drop tablespace hxltps;
DROP TABLESPACE
这个时候旧的链接也删除了
[postgres@host134 pg_tblspc]$ ls -al
total 4
drwx------ 2 postgres postgres 19 Oct 26 16:49 .
drwx------ 19 postgres postgres 4096 Oct 26 10:25 ..
lrwxrwxrwx 1 postgres postgres 17 Oct 26 16:42 40973 -> /opt/pg13/mytps01