Greenplum创建表空间

Greenplum中创建表空间的方式和pg中有较大不同,因为gp中有表空间(tablespace)和文件空间(filespace)两个概念。

我们可以这样去理解,因为在gp中master和segment节点中数据文件肯定得存放在不同的位置,所以我们得想办法将所有的文件系统位置的文件全部都表示起来,因此就引入了文件空间这样一个概念——Greenplum数据库中所有部件所需的文件系统位置集合被称作一个文件空间。文件空间可以被一个或多个表空间使用。

gp中默认的两个表空间pg_default和pg_global是存放在pg_system文件空间中的。

postgres=# \db
          List of tablespaces
    Name    |  Owner  | Filespace Name 
------------+---------+----------------
 pg_default | gpadmin | pg_system
 pg_global  | gpadmin | pg_system
(2 rows)

我们使用gpfilespace工具来创建文件空间。
首先需要创建一个文件空间配置文件:
[gpadmin@test180 gpdata]$ gpfilespace -o gpfilespace_config
然后根据提示依次输入:该文件空间的名称、主要Segment文件系统的位置、镜像Segment文件系统的位置以及Master文件系统的位置。(注:输入的目录需要提前创建好)

20191203:16:13:04:031131 gpfilespace:test180:gpadmin-[INFO]:-getting config
Enter a name for this filespace
> fstest

Checking your configuration:
Your system has 1 hosts with 2 primary and 0 mirror segments per host.

Configuring hosts: [test180]

Please specify 2 locations for the primary segments, one per line:
primary location 1> /home/gpadmin/gpdata/segmentdata1/fstest1
primary location 2>  /home/gpadmin/gpdata/segmentdata1/fstest2

Enter a file system location for the master
master location> /home/gpadmin/gpdata/masterdata/fstest

filespace会创建一个配置文件。检查该文件来验证gpfilespace配置是正确的。
[gpadmin@test180 gpdata]$ less gpfilespace_config
filespace:fstest
test180:1:/home/gpadmin/gpdata/masterdata/fstest/gpseg-1
test180:2:/home/gpadmin/gpdata/segmentdata1/fstest1/gpseg0
test180:3:/home/gpadmin/gpdata/segmentdata1/fstest2/gpseg1

再次运行gpfilespace来基于该配置文件创建该文件空间
[gpadmin@test180 gpdata]$ gpfilespace -c gpfilespace_config

接下来我们就可以使用这个文件空间去创建表空间了:

postgres=# CREATE TABLESPACE fstest FILESPACE fstest;
CREATE TABLESPACE

–查看:

postgres=# \db fstest 
        List of tablespaces
  Name  |  Owner  | Filespace Name 
--------+---------+----------------
 fstest | gpadmin | fstest
(1 row)

–删除表空间和文件空间:
要删除一个表空间,用户必须是该表空间的拥有者或者超级用户。如果要删除一个表空间,只有在所有数据库中所有使用该表空间的对象都被删除之后才能做到。
只有超级用户才能删除一个文件空间。只有所有使用一个文件空间的表空间都被移除后,该文件空间才能被删除。
DROP TABLESPACE命令移除一个空的表空间。
DROP FILESPACE命令移除一个空的文件空间。

总结:
Greenplum中创建表空间和pg中的差异在于引入了文件空间这一概念,可以将文件空间理解为所有节点上表空间对应的数据文件的集合。

发布了97 篇原创文章 · 获赞 25 · 访问量 8109

猜你喜欢

转载自blog.csdn.net/weixin_39540651/article/details/104051545
今日推荐