PostgreSQL-10迁移表空间

前阵子在工作中遇到一个问题,公司pg数据库的数据盘即将爆满,在联想到MySQL可以迁移表空间的基础上,想尝试一下pg是否也能完成此操作,经过一系列试验,发现pg确实也是可以进行表空间迁移的,就此记录一下操作流程

关键步骤

创建新的表空间

postgres=# create tablespace tbs1 location '/data/pgsql-10/data_tbs1';

简要说明:
tbs1:新的表空间的名字,可自定义
/data/pgsql-10/data_tbs1:新的表空间的存储位置,该目录需要提前建好,并且将所属权改成postgres用户和组
当建好新的表空间之后,在data目录中的pg_tblspc目录中就会生成一个软链接指向指定的文件夹

迁移表空间

postgres=# alter table tmp_t1 set tablespace tbs1;

简要说明:
tmp_t1:需要迁移表空间的表名
tbs1:新的表空间名
迁移了表空间之后,就会发现该表的数据已经转移到了新的表空间内,但是如果这张表建有索引,索引不会跟着数据一起转移过去,需要在新的表空间里建立新的索引来替代老的索引,例子如下:

postgres=# create index concurrently idx_tmp_t1_x2 on tmp_t1 using btree (c0) tablespace tbs1;
postgres=# begin;
drop index idx_tmp_t1_x1;
alter index idx_tmp_t1_x2 rename to idx_tmp_t1_x1;
commit;

简要说明:
相当于在新的表空间建立了一个新的索引,然后删除老的索引,将新的索引改名成老的索引的名字,达到索引替换的效果
至此,就完成了迁移表空间的整个流程

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值