微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL数据库迁移涉及到的表空间的问题

这两天需要迁移数据库的数据文件到其他目录下,停止Postgresql服务,移动data目录到目的地后,修改对应的conf配置文件的数据目录参数为新的目录,启动Postgresql服务,出现错误提示不能启动。纠结此问题很长时间,在文档中发现了数据库的表空间是记录在postgres这个系统数据库中的。

说到这里,就要再简单讲一下表空间的概念了。表空间就是一个简单的目录,其主要用途分两个:
1.单独扩展表空间用,一旦磁盘或分区被耗尽,可以创建一个表空间到其他磁盘或分区上面。
2.区分不同对象的存储位置,比如可将索引放入较快磁盘的表空间上,而将固定不变的数据放入较慢磁盘的表空间上。
与Oracle数据库中的表空间被独占不同,Postgresql的表空间是可以被共享的。
当创建了一个表空间后,这个表空间可以被多个数据库、表、索引等数据库对象使用。达到对象的分离与归类的目的。
在Postgresql中有两个系统自建表空间:pg_global和pg_default。

前者是系统全局表空间,存储了关键的共享系统目录。
后者是系统认表空间,可通过set default tablespace=tablespacename来指定为其他表空间,在建立数据库、表、索引等数据库对象时,若不指定表空间参数,则系统自动对象创建认表空间中。如create table tt(id int) tablespace space1.该语句等价于set default tablespace=space1;create table tt(id int);

tablespace的记录存储在系统数据库postgrse的pg_tablespace表中,可以使用命令/db 或者sql语句select * from pg_tablespace命令查看。

List of tablespaces
Name | Owner | Location
-----------+----------+-----------------------------------
pg_default | postgres |
pg_global | postgres |
ts_licai | kanon | D:/Postgresql90/TableSpc/ts_licai

这样,对于移动数据目录到其他位置后,要如何修改表空间也就了然了:需要修改pg_tablspace这个表内对应的表空间的Location字段为新的位置后,重启数据库

问题解决

原文地址:https://www.jb51.cc/postgresql/196995.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐