GreatSQL社区

搜索

reddey

如何给pigsty集群安装扩展

reddey 已有 72 次阅读2025-8-21 14:27 |系统分类:运维实战


之前我有一篇文章介绍了用pigsty部署PG数据库集群,但如何给集群安装扩展,我们先看一下社区的文档介绍如下:

如果你想在 PostgreSQL 集群上安装扩展,请将它们加入到 pg_extensions 中,并执行:

./pgsql.yml -t pg_extension     # 安装扩展

一部分扩展需要在 shared_preload_libraries 中加载后才能生效。你可以将它们加入到 pg_libs 中,或者配置一个已有的集群。

最后,在集群的主库上执行 CREATE EXTENSION ; 来完成扩展的安装。

示例:在 pg-test 集群上安装 pg_cron 扩展

ansible pg-test -b -m package -a "name=pg_cron_15"          # 在所有节点上安装 pg_cron 包

# 将 pg_cron 添加到 shared_preload_libraries 中

pg edit-config --force -p shared_preload_libraries='timescaledb, pg_cron, pg_stat_statements, auto_explain'

pg restart --force pg-test                                  # 重新启动集群

psql -h pg-test -d postgres -c 'CREATE EXTENSION pg_cron;'  # 在主库上安装 pg_cron

看了上面的文字介绍,我们先梳理一下安装思路。

1、切换为vagrant用户,在主节点中要先把要安装的扩展添加到pigsty.yml配置文件的pg_extensions选项中,编辑后保存一下,内容如下所示。

pg_extensions: [ postgis, timescaledb, citus, pgvector,pg_cron ]

2、切换为postgres用户,在主节点执行如下命令,将pg_cron扩展添加到shared_preload_libraries。如果有些扩展不用添加到shared_preload_libraries,这一步就用不执行了。执行命令内容如下所示:

[08-20 19:51:27] postgres@h.pigsty:~

$ pg edit-config --force -p shared_preload_libraries='timescaledb, pg_cron, pg_stat_statements, auto_explain'

---

+++

@@ -78,7 +78,7 @@

    pg_wait_sampling.profile_queries: all

    random_page_cost: 1.1

    shared_buffers: 906MB

-    shared_preload_libraries: timescaledb, pg_stat_statements, auto_explain

+    shared_preload_libraries: timescaledb, pg_cron, pg_stat_statements, auto_explain

    ssl: 'on'

    ssl_ca_file: /pg/cert/ca.crt

    ssl_cert_file: /pg/cert/server.crt

Configuration changed

上面的shared_preload_libraries做好了,还要用如下命令重启一下pigsty集群。

pg restart --force pg-test

要注意的是上面的命令中pg-test是集群的名称,不是数据库名称,不是主机名称。

3、要在集群中所有节点都要安装ansible ,如果哪个从节点没有安装请安装一下,记得要用root用户安装。

[08-20 20:04:54] root@pg-meta-2:~

$ yum install -y ansible

上次元数据过期检查:1:24:28 前,执行于 2025年08月20日 星期三 18时40分37秒。

依赖关系解决。

=============================================================================================

软件包                       架构           版本                    仓库               大小

=============================================================================================

安装:

ansible                      noarch         1:7.7.0-1.el9           epel               34 M

安装依赖关系:

ansible-core                 x86_64         1:2.14.18-1.el9         appstream         2.2 M

python3-cffi                 x86_64         1.14.5-5.el9            baseos            241 k

python3-cryptography         x86_64         36.0.1-4.el9            baseos            1.2 M

python3-packaging            noarch         20.9-5.el9              appstream          69 k

python3-ply                  noarch         3.11-14.el9.0.1         baseos            103 k

python3-pycparser            noarch         2.20-6.el9              baseos            124 k

python3-pyparsing            noarch         2.4.7-9.el9             baseos            150 k

python3-pyyaml               x86_64         5.4.1-6.el9             baseos            191 k

python3-resolvelib           noarch         0.5.4-5.el9             appstream          29 k

sshpass                      x86_64         1.09-4.el9              appstream          27 k

事务概要

=============================================================================================

安装  11 软件包

总下载:39 M

安装大小:383 M

下载软件包:

(1/11): python3-pycparser-2.20-6.el9.noarch.rpm              449 kB/s | 124 kB     00:00

(2/11): python3-pyyaml-5.4.1-6.el9.x86_64.rpm                584 kB/s | 191 kB     00:00

(3/11): python3-cryptography-36.0.1-4.el9.x86_64.rpm         3.0 MB/s | 1.2 MB     00:00

(4/11): python3-pyparsing-2.4.7-9.el9.noarch.rpm             832 kB/s | 150 kB     00:00

(5/11): python3-cffi-1.14.5-5.el9.x86_64.rpm                 1.8 MB/s | 241 kB     00:00

(6/11): python3-ply-3.11-14.el9.0.1.noarch.rpm               412 kB/s | 103 kB     00:00

(7/11): sshpass-1.09-4.el9.x86_64.rpm                        287 kB/s |  27 kB     00:00

(8/11): python3-resolvelib-0.5.4-5.el9.noarch.rpm            292 kB/s |  29 kB     00:00

(9/11): python3-packaging-20.9-5.el9.noarch.rpm              376 kB/s |  69 kB     00:00

(10/11): ansible-core-2.14.18-1.el9.x86_64.rpm               3.0 MB/s | 2.2 MB     00:00

(11/11): ansible-7.7.0-1.el9.noarch.rpm                      3.5 MB/s |  34 MB     00:09

---------------------------------------------------------------------------------------------

总计                                                         3.7 MB/s |  39 MB     00:10

运行事务检查

事务检查成功。

运行事务测试

事务测试成功。

运行事务

 准备中  :                                                                              1/1

 安装    : python3-resolvelib-0.5.4-5.el9.noarch                                       1/11

 安装    : sshpass-1.09-4.el9.x86_64                                                   2/11

 安装    : python3-pyparsing-2.4.7-9.el9.noarch                                        3/11

 安装    : python3-packaging-20.9-5.el9.noarch                                         4/11

 安装    : python3-ply-3.11-14.el9.0.1.noarch                                          5/11

 安装    : python3-pycparser-2.20-6.el9.noarch                                         6/11

 安装    : python3-cffi-1.14.5-5.el9.x86_64                                            7/11

 安装    : python3-cryptography-36.0.1-4.el9.x86_64                                    8/11

 安装    : python3-pyyaml-5.4.1-6.el9.x86_64                                           9/11

 安装    : ansible-core-1:2.14.18-1.el9.x86_64                                        10/11

 安装    : ansible-1:7.7.0-1.el9.noarch [=====================================      ] 11/11

 安装    : ansible-1:7.7.0-1.el9.noarch [========================================   ] 11/11

 安装    : ansible-1:7.7.0-1.el9.noarch                                               11/11

 运行脚本: ansible-1:7.7.0-1.el9.noarch                                               11/11

 验证    : python3-pycparser-2.20-6.el9.noarch                                         1/11

 验证    : python3-pyyaml-5.4.1-6.el9.x86_64                                           2/11

 验证    : python3-cryptography-36.0.1-4.el9.x86_64                                    3/11

 验证    : python3-ply-3.11-14.el9.0.1.noarch                                          4/11

 验证    : python3-pyparsing-2.4.7-9.el9.noarch                                        5/11

 验证    : python3-cffi-1.14.5-5.el9.x86_64                                            6/11

 验证    : ansible-core-1:2.14.18-1.el9.x86_64                                         7/11

 验证    : sshpass-1.09-4.el9.x86_64                                                   8/11

 验证    : python3-resolvelib-0.5.4-5.el9.noarch                                       9/11

 验证    : python3-packaging-20.9-5.el9.noarch                                        10/11

 验证    : ansible-1:7.7.0-1.el9.noarch                                               11/11

已安装:

 ansible-1:7.7.0-1.el9.noarch               ansible-core-1:2.14.18-1.el9.x86_64

 python3-cffi-1.14.5-5.el9.x86_64           python3-cryptography-36.0.1-4.el9.x86_64

 python3-packaging-20.9-5.el9.noarch        python3-ply-3.11-14.el9.0.1.noarch

 python3-pycparser-2.20-6.el9.noarch        python3-pyparsing-2.4.7-9.el9.noarch

 python3-pyyaml-5.4.1-6.el9.x86_64          python3-resolvelib-0.5.4-5.el9.noarch

 sshpass-1.09-4.el9.x86_64

完毕!

4、在所有节点上以vagrant用户用ansible安装扩展,由于我部署的PG集群使用17版本,我选择了pg_cron_17扩展,这个要根据你的具体PG版本修改一下扩展版本。当然你也可以用冯哥的pig进行安装,那也是一个专业的扩展安装工具,实在是广大PG数据库爱好者安装扩展的福音,网友们不用再去github费心寻找了,冯哥已经花了大量心血收集扩展,几乎包括你要用的所有扩展。

[08-20 20:06:08] vagrant@pg-meta-2:~

$ ansible 127.0.0.1 -b -m package -a "name=pg_cron_17"

127.0.0.1 | SUCCESS => {

   "changed": false,

   "msg": "Nothing to do",

   "rc": 0,

   "results": []

5、最后,我们在主库中执行CREATE EXTENSION pg_cron。

注:虽然社区的网站提供了扩展的安装方法,内容只有区区几行字,似乎比较简单。但实际操作了起来,为了厘清思路我昨晚花了1个多小时才搞明白。通常技术文档内容是独立分散的,想想如何把这些内容有效地串联起来解决实际问题,另外在读文档时如果遇到不懂时,多在群里问一下网友和作者。


评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-8-29 03:03 , Processed in 0.014124 second(s), 9 queries , Redis On.
返回顶部