openGauss/MogDB 脚本源码浅析(2)—— gs_install_plugin/gs_install_plugin_local

openGauss/MogDB 脚本源码浅析(2)—— gs_install_plugin/gs_install_plugin_local

摘要

openGauss 提供了 gs_install_plugin/gs_install_plugin_local 工具用于安装插件,目前支持安装的插件包括 pg_repack、pg_trgm、dblink、wal2json、orafce、pg_bulkload、pg_prewarm 等。gs_install_plugin 适用于一主多备部署的 MogDB,gs_install_plugin_local 适用于单机部署的 MogDB。

这两个工具是 python 编写的脚本,直接可以看到源码实现。本文通过对两个工具的源码进行分析,希望从底层了解插件安装的原理,掌握原理后可以在安装出现问题或者手动安装时对整个安装流程有所帮助。

整体流程

主要流程有如下几个步骤:

1 解析参数

根据命令行传入参数进行解析,并设置相关变量,如:要安装哪些插件、是否强制覆盖、指定安装包路径、是否开启调试信息等。

  • -h, —help

显示帮助信息

  • -p

指定 plugins 安装包位置,默认在\$GPHOME/script/static 寻找 plugins 安装包

  • --all

安装全部插件

  • --force

指定覆盖旧的插件

  • --plugins

可安装多个插件,—plugins 后跟插件名

  • --PLUGIN_NAME

指定安装某一个插件,如:—dblink

  • --debug

输出 debug 信息

详细请参考“**官方文档**”

2 初始化 Deploy 类

将解析好的参数赋值给 Deploy 类的成员变量。

几处关键代码:

  • 环境变量和关键目录
GAUSSHOME = os.getenv("GAUSSHOME")
GPHOME = os.getenv('GPHOME')
LIB_POSTGRESQL_DIR = f'{GAUSSHOME}/lib/postgresql'
EXTENSION_DIR = f'{GAUSSHOME}/share/postgresql/extension'
CONTRIB_DIR = f'{GAUSSHOME}/share/postgresql/contrib'

主要是得到下载插件包的目录和安装 openGauss 插件的系统目录。

  • 插件包目录

如果没有设置-p 选型,则使用默认目录

self.plugin_pkg = f"{GPHOME}/script/static/Plugins-*.tar.gz"
  • 解压插件包的目录
self._plugins_temp_dir = f"{GPHOME}/script/static/plugins/"
self.executor(f'mkdir -p {self._plugins_temp_dir}')
logger.debug(f"deconpress plugin package to {self._plugins_temp_dir}")
self.local_execute(f"tar -xf {self.plugin_pkg} -C {self._plugins_temp_dir}")
  • 集群相关
-X                        Specify the XML file path

如果是集群安装(使用 gs_install_plugi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值