Greenplum的每一个实例节点是一个pg数据库,所以pg上的扩展功能同样可以在greenplum上使用,但是当前5.X的GP版本里,集成的PG版本比较低,对extenison支持的不好甚至有的功能不支持,所以在greenplum中使用扩展的时候需要借用高版本postgresql的contrib包。
为Greenplum安装扩展功能的步骤如下:
1、需要使用编译安装版GP(安装包的版本也可以),从postgresql 9.X 版本源文件中得到的contrib目录,压缩后 → contrib.zip
解压覆盖到greenplum编译文件的contrib目录下,一定要覆盖复制,避免目录差异导致无法完成后面的编译。
执行正常的编译安装,完成后确保数据库开始运行。
很重要的一点,要看当前集群里有几个节点,也就是如果有多个节点的话,每个节点上都要执行这个操作。
例如node01上有安装的源文件,node02是segment,只有安装时自动复制过去的数据库执行目录,这时候就要把安装目录原封不动的也复制到node02上,然后再更新contrib目录,同时要编辑master的hba文件,把node02的访问加进去,这样才能在node02上编译那个扩展的功能。
2、找到每个节点中gp安装时的编译目录(node02上是刚刚手动复制过来的),contrib目录下是所有可以使用的扩展。
例如为GP增加数据存储加密的功能,则进入pgcrypto目录,进入后直接执行“make”和"make install"。
系统提示把相关的文件复制到指定目录。
3、切换到每个节点上数据库运行目录,进入$gpdb/share/postgresql/extension/,这里是刚刚执行make install时拷贝过来的内容,在这个目录操作。刚才要安装数据存储加密的扩展,而拷贝过来的文件是pgcrypto相关的3个文件,若需要给数据库中gpdb_test库扩展这个功能,使用数据库用户(数据库运行中)执行:
psql -d gpdb_test -f $gpdb/share/postgresql/extension/pgcrypto–1.0.sql
注意,在node02上执行的时候,需要 psql -d gpdb_test -h node01 -f *.sql,指定master的远程连接。
系统提示安装正确。
4、登录对应的数据库,执行create extension pgcrypto;
完成pgcrypto的扩展。