在GP上创建表空间,首先要创建filespace。
首先在所有节点的相同位置创建目录,例如:
在master创建,master是node01.
/data/gpdata/space_1目录
同样在node02的这个位置创建同名的space_1目录
修改所属为数据库用户。
登录数据库,查看节点分布情况。
select dbid,content,role,preferred_role,hostname,port from gp_segment_configuration order by role,dbid;
dbid | content | role | preferred_role | hostname | port
------+---------+------+----------------+----------+-------
4 | 0 | m | m | node02 | 50000
5 | 1 | m | m | node01 | 50000
1 | -1 | p | p | node01 | 5432
2 | 0 | p | p | node01 | 40000
3 | 1 | p | p | node02 | 40000
(5 rows)
dbid信息很关键,和后面的配置文件内容相关,这里查到dbid从1到5,则下面配置文件的dbid也要从1到5
编写配置文件conf,内容如下,名称为space_1的filespace。
filespace:space_1
node01:1:/data/gpdata/space_1/gp-0
node01:2:/data/gpdata/space_1/gp-1
node01:3:/data/gpdata/space_1/gp-2
node01:4:/data/gpdata/space_1/gp-3
node01:5:/data/gpdata/space_1/gp-4
~
space_1下面目录在配置文件里写,不用在系统上建,数据库会自动生成。
这里只写到node01即可,其他节点自动创建。
给每个节点中,bin/lib/gpdircheck 增加执行权限。
开始生成filespace。
在bin中执行
gpfilespace -c /opt/conf
当前只是创建了filespace,使用这个filespace创建表空间。
create tablespace tbspace_1 filespace space_1;
再创建表的时候使用这个tablespace
create table t1(a int) tablespace tbspace_1;
查询当前系统中的表空间信息:
select * from pg_tablespace ;
spcname | spcowner | spclocation | spcacl | spcprilocations | spcmirlocations | spcfsoid
------------+----------+-------------+--------+-----------------+-----------------+----------
pg_default | 10 | | | | | 3052
pg_global | 10 | | | | | 3052
tbspace_1 | 10 | | | | | 16523
(3 rows)