Greenplum 实战-添加拓展插件

概述

PostgreSQL提供了丰富的扩展,如模糊查询 pg_trgm、中文全文检索 zhparser、字符串相似度判断 fuzzystrmatch、数组相似度 smlar、位图计算 roaringbitmap等等。Greenplum 使用了PostgreSQL内核,理论上兼容PG扩展包。本文将介绍在Greenplum上怎么安装扩展插件。

快速入门

查看自带插件列表

已装插件列表

通过查询pg_extension视图,可看到已装的扩展。gp默认只安装了plpgsql插件

SELECT * from pg_extension;

在这里插入图片描述

可安装的插件列表

SELECT * from pg_available_extensions;

在这里插入图片描述

插件详情

可看到当前拥有的扩展清单、扩展版本号、是否已安装

SELECT * from pg_available_extension_versions;

在这里插入图片描述

安装插件

加载已添加的扩展

通过命令 CREATE EXTENSION,加载pg_available_extensions视图里的扩展到数据库中。执行成功,即可直接使用。
相关命令介绍详见:http://docs-cn.greenplum.org/v6/ref_guide/sql_commands/CREATE_EXTENSION.html#topic1

CREATE EXTENSION [ IF NOT EXISTS ] extension_name
  [ WITH ] [ SCHEMA schema_name ]
           [ VERSION version ]
           [ FROM old_version ]
           [ CASCADE ]
           
示例:
CREATE EXTENSION fuzzystrmatch;

安装外部插件

需要先下载扩展包,解压到gp数据库的扩展包目录下,执行编译脚本。安装成功后,在可用插件中就可以看到该插件信息。接下来通过CREATE EXTENSION加装插件(过程同上),就完成了。

下载扩展包

如果扩展在未在视图pg_available_extension_versions中找到,就得先进行插件安装。GP团队已收集了常用的插件(实际就是PostgreSQL的扩展插件),统一维护在gp源码包中。可以通过下载源码包获得需要的插件,或单独下载需要的三方扩展包。以模糊查询 pg_trgm插件为例。
下载gp源码包,并解压

wget https://github.com/greenplum-db/gpdb/archive/refs/tags/6.18.2.tar.gz \
&& tar -zxvf gpdb-6.18.2.tar.gz
拷贝扩展包到安装目录

gp源码包解压后,找到需要的扩展包。扩展包路径在gpdb-6.18.2/contrib下,进到该目录可看到可用的扩展包
在这里插入图片描述

复制扩展包到GP数据库扩展包安装目录($GPHOME/share/postgresql/contrib),当然也可以把插件全部拷贝过去,这里以模糊查询 pg_trgm插件为例,其路径为 gpdb-6.18.2/contrib/pg_trgm

cp -r gpdb-6.18.2/contrib/pg_trgm $GPHOME/share/postgresql/contrib
编译并安装扩展包

进到GP数据库扩展包安装目录,进到需安装的扩展包里,执行编译安装命令

cd $GPHOME/share/postgresql/contrib/pg_trgm 

在这里插入图片描述注意请切换gpadmin用户(与GP安装同用户)安装,如果当前不是请授权文件夹权限并切换到gpadmin用户

chown -R gpadmin:gpadmin $GPHOME/share/postgresql/contrib/pg_trgm 
su gpadmin

编译并安装,注意要带上USE_PGXS=1,直接执行make会报错。见附录

make USE_PGXS=1 && make USE_PGXS=1 install
验证插件安装是否成功

安装成功后,会在$GPHOME/share/postgresql/extension目录下生成插件相关的几个文件
在这里插入图片描述

并且在可用插件列表中也会出现。因为笔者已安装,固直接截图插件详情里的。验证成功后,注意这时别急,如果gp为集群环境,请在sement上也进行安装

SELECT * from pg_available_extensions;

在这里插入图片描述

sement节点机器安装扩展插件

集群环境下,sement机器必须也安装插件。还记得gp安装时的gpscp、gpssh命令么,没错,这时可以用这两个工具批量操作。进行相同安装操作,或可直接拷贝安装成功后生成的文件(注意不单单是$GPHOME/share/postgresql/extension目录下的,没实践不展开)。此处以安装包为例。
打包插件包并拷贝到sement节点上

# 打包压缩
cd $GPHOME/share/postgresql/contrib \
&& tar -czvf pg_trgm.tar.gz ./pg_trgm

# 拷贝到segment上,seghost文件为segment机器列表
gpscp -f <seghost_list> ./pg_trgm.tar.gz=:$GPHOME/share/postgresql/contrib/pg_trgm.tar.gz
# 示例
gpscp -f /home/gpadmin/config/seghosts ./pg_trgm.tar.gz=:/opt/gpdb/share/postgresql/contrib/pg_trgm.tar.gz

执行安装脚本

# 1、ssh打通segment,批量安装
gpssh -f /home/gpadmin/config/seghosts 

# 检查下segment是否都连上了
pwd

# 2、进入插件包目录
cd $GPHOME/share/postgresql/contrib

# 3、解压缩并进入插件安装包目录下
tar -zxvf pg_trgm.tar.gz && cd pg_trgm

# 4、编译并安装,等待安装完成
make USE_PGXS=1 && make USE_PGXS=1 install

# 5、等待安装完成,退出
exit

到此segment也都装上了,外部插件已成功添加。

加载扩展到数据库中

通过命令 CREATE EXTENSION 加载插件。同加载已添加的扩展一样

CREATE EXTENSION pg_trgm
使用

插件安装并加载完成,就可以直接使用了。不同的插件,作用的范围不同,新增的特性会在不同的地方体现,详细的说明,请自行翻阅插件本身的文档。
以模糊查询插件为例,具体使用详见:http://postgres.cn/docs/13/pgtrgm.html

select show_trgm('hello 这个傻猿不太冷 怎么这么帅');  

看到以下内容,就大功告成了。好了,你可以尽情摸索新插件带来的新特性
在这里插入图片描述

删除扩展

通过命令 DROP EXTENSION
相关命令介绍详见:http://docs-cn.greenplum.org/v6/ref_guide/sql_commands/DROP_EXTENSION.html#topic1

DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

示例:
DROP EXTENSION fuzzystrmatch;

更改已安装的扩展定义

相关命令介绍详见:http://docs-cn.greenplum.org/v6/ref_guide/sql_commands/ALTER_EXTENSION.html#topic1

ALTER EXTENSION name UPDATE [ TO new_version ]
ALTER EXTENSION name SET SCHEMA new_schema
ALTER EXTENSION name ADD member_object
ALTER EXTENSION name DROP member_object

where member_object is:

  ACCESS METHOD object_name |
  AGGREGATE aggregate_name ( aggregate_signature ) |
  CAST (source_type AS target_type) |
  COLLATION object_name |
  CONVERSION object_name |
  DOMAIN object_name |
  EVENT TRIGGER object_name |
  FOREIGN DATA WRAPPER object_name |
  FOREIGN TABLE object_name |
  FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |
  MATERIALIZED VIEW object_name |
  OPERATOR operator_name (left_type, right_type) |
  OPERATOR CLASS object_name USING index_method |
  OPERATOR FAMILY object_name USING index_method |
  [ PROCEDURAL ] LANGUAGE object_name |
  SCHEMA object_name |
  SEQUENCE object_name |
  SERVER object_name |
  TABLE object_name |
  TEXT SEARCH CONFIGURATION object_name |
  TEXT SEARCH DICTIONARY object_name |
  TEXT SEARCH PARSER object_name |
  TEXT SEARCH TEMPLATE object_name |
  TRANSFORM FOR type_name LANGUAGE lang_name |
  TYPE object_name |
  VIEW object_name

and aggregate_signature is:

* | [ argmode ] [ argname ] argtype [ , ... ] |
  [ [ argmode ] [ argname ] argtype [ , ... ] ] 
    ORDER BY [ argmode ] [ argname ] argtype [ , ... ]

附录

GP支持插件列表

完整清单详见: https://github.com/greenplum-db/gpdb/tree/02f2a3f39abefa8f7cb24c392d59d0d7be8b8495/contrib
在这里插入图片描述

阿里云-RDS PostgreSQL 插件说明&实践文档(白嫖)

地址:https://help.aliyun.com/document_detail/142340.html
阿里云上已经帮我们收集了大量插件说明文档,还整理了很多有用实践文档。除了pg的一些实操,在这神奇的网站上,大家还可以找到很多有用的实践文档。不得不感谢”996“工程师们做出的无私贡献(看吧,我没在摸鱼)。一时白嫖一时爽,一直白嫖一直爽。

RoaringBitmap插件地址

https://github.com/zeromax007/gpdb-roaringbitmap

make 时报错:…/…/src/Makefile.global: 没有那个文件或目录

在这里插入图片描述

看Makefile文件即可知道如何解决
在这里插入图片描述

解决方案:带上参数USE_PGXS即可

make USE_PGXS=1

make 时报错:gcc问题

一般都是没有安装gcc的原因,安装下gcc

sudo yum install gcc

报错:gp相关命令不存在

一般重新应用下环境变量即可

source ~/.base_profile

报错:source环境变量,但是gp命令不生效

已经执行了source ~/.base_profile,但是gp命令还是报错:找不到。更神奇的是在特定目录下,可以执行gp命令,其他目录都不可用。
出现这情况,请检查下配置文件的GP安装主路径是否正确。可通过env命令检查当前生效的环境变量信息

env

如果发现gp的path跟实际的有出入,请做出相应更改。可能是GPHOME变量有问题,在环境变量中指定GPHOME变量

# 查看 GPHOME变量
echo $GPHOME

# 如果与实际不符,手动指定GPHOME
vim ~/.bash_profile

# 重新执行 srouce命令
source ~/.bash_profile
对于Greenplum数据库的分布式部署,您需要遵循以下步骤: 1. 首先,确保您的系统符合Greenplum的硬件要求,并具备必要的操作系统和软件依赖。 2. 下载Greenplum数据库的安装包(greenplum-db-6.13.0-rhel7-x86_64.rpm),并将其复制到所有节点上。 3. 在每个节点上安装Greenplum数据库软件包。您可以使用以下命令进行安装: ``` rpm -ivh greenplum-db-6.13.0-rhel7-x86_64.rpm ``` 4. 创建一个主节点和多个段节点的配置文件(gpinitsystem_config),该文件指定了Greenplum数据库的分布式配置。您可以使用以下命令创建配置文件: ``` gpinitsystem -c gpinitsystem_config ``` 5. 编辑配置文件(gpinitsystem_config),指定主节点和段节点的主机名、IP地址、端口号等信息。确保所有节点都在配置文件中正确配置。 6. 在主节点上运行gpinitsystem命令以初始化Greenplum数据库集群。这将创建数据库实例并启动相关服务。您可以使用以下命令进行初始化: ``` gpinitsystem -c gpinitsystem_config ``` 7. 在每个段节点上启动Greenplum数据库服务。您可以使用以下命令启动服务: ``` gpstart -a ``` 8. 检查Greenplum数据库集群的状态,确保所有节点都已成功启动。您可以使用以下命令进行检查: ``` gpstate -a ``` 以上是Greenplum数据库的基本分布式部署步骤。请注意,这只是一个概述,并且需要根据您的特定环境进行适当的调整和配置。建议您参考Greenplum官方文档以获取更详细的部署指南和最佳实践。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值