资源池化安装与使用

手动安装示例

与传统gs_initdb建库相比,资源池化建库将目录分为三种类型,每实例独占且不共享、每实例独占且共享、所有实例共享。其中需要共享的目录均需存放到磁阵设备上,而不共享的目录存放在本地盘上。另外备机建库只需要建隶属于自己的目录,不需要再次创建所有实例共享的目录结构。资源池化新增了相关GUC参数,以及将系统表存储方式从页式切换到段页式。

资源池化安装与使用 - 图1 说明: 此处的单步手动安装是指工程编译之后,可单步执行相关命令进行资源池化建库。openGauss常规安装请参照《安装指南》。

  • 前置条件

  • 工程已完成代码编译,编译请参见软件安装编译。

  • 主机已经挂载磁阵LUN设备,并且已经安装ultrapath多路径软件,磁阵设备可用。
  • 操作步骤

  • 为磁阵LUN盘符创建软链接,并赋予相应的用户权限(假设磁阵LUN对应的盘符为/dev/sde, /dev/sdf)。

    1. sudo ln -s /dev/sde /dev/tpcc_data 2. sudo ln -s /dev/sdf /dev/tpcc_log 3. sudo chmod 777 /dev/tpcc_data 4. sudo chmod 777 /dev/tpcc_log 2. 为需要磁阵RAWIO权限的可执行文件赋权。

    1. sudo -i setcap CAP_SYS_RAWIO+ep 绝对路径/perctrl

    perctrl:用于对dss相关工具和进程赋予读写权限的可执行工具。 3. 创建DSS服务端进程及建资源池化库需要的配置文件。

    测试目录(假设为/data/test)

    1. └─dss_home/ 2. ├── cfg 3. │ ├── dss_inst.ini 4. │ └── dss_vg_conf.ini 5. └── log // 启动前需存在log目录

    dss_init.ini配置内容如下:

    1. INST_ID=0 2. _LOG_LEVEL=55 3. _LOG_BACKUP_FILE_COUNT=128 4. _LOG_MAX_FILE_SIZE =20M 5. LSNR_PATH=/data/test/dss_home 6. STORAGE_MODE=SHARE_DISK 7. _SHM_KEY=12

    上述配置中参数说明如下:

    • INST_ID配置实例号,取值范围[0, 63],每个主备下的dssserver进程各不相同。
    • _LOG_LEVEL日志级别。
    • _LOG_BACKUP_FILE_COUNT日志文件最多保留的个数。
    • _LOG_MAX_FILE_SIZE为单个日志文件最大大小。
    • LSNR_PATH为DSS客户端与服务端之间通信使用的domain socket保存的目录,一般设为DSS服务端进程的家目录。
    • STORAGE_MODE为DSS对应的存储设备类型,磁阵的话配置为SHARE_DISK。
    • _SHM_KEY共享内存KEY,需要保证每个DSS各不相同。

    dss_vg_conf.ini配置内容如下,

    1. data:/dev/tpcc_data 2. log: /dev/tpcc_log

    表示+data目录的内容存放在/dev/tpcc_data设备上,+log目录内容存放在/dev/tpcc_log设备上。这里要注意下,约定通过根目录名是否有+字符区分是文件系统中的文件,还是DSS中的文件。用户可以把DSS当做类似分布式文件系统来看待。 4. 使用DSS客户端工具(dsscmd)在磁阵设备上初始化VG(类似于在裸盘上初始化文件系统的操作)。

    1. # 清空磁阵LUN开头数据 2. dd if=/dev/zero bs=2048 count=100000 of=/dev/tpcc_data 3. dd if=/dev/zero bs=2048 count=100000 of=/dev/tpcc_log 4. # 创建VG 5. dsscmd cv -g data -v /dev/tpcc_data -s 2048 -D /data/ss_test/dss_home 6. dsscmd cv -g log -v /dev/tpcc_log -s 65536 -D /data/ss_test/dss_home 7. # 拉起dssserver 8. dssserver -D /data/ss_test/dss_home & 5. 通过gs_initdb建立资源池化库。

    1. gs_initdb -D /data/ss_test/dn_primary --nodename=single_node -w ****** --vgname="+data,+log" --enable-dss --dms_url="0:127.0.0.1:1611,1:127.0.0.1:1711" -I 0 --socketpath="UDS:/data/ss_test/dss_home/.dss_unix_d_socket"

    其中新增5个相关参数:

    • --vgname 卷组名,指定资源池化库建在哪个卷组下,这个名字与dss_vg_conf.ini文件中的配置项相关,卷组名需要出现在配置文件中,并且以‘+’字符开头。
    • --enable-dss 表示资源池化库要建到DSS里。
    • --dms_url “0:127.0.0.1:1611,1:127.0.0.1:1711”,格式为instance_id:ip:port。
    • -I 指定当前节点的实例号,取值范围[0,63]。
    • --socketpath 指定DSS客户端(这里指集成到数据库相关可执行文件中的DSS客户端动态库)与服务端通信使用的unix domain socket存放的位置。
    • 建资源池化库成功,通过gs_ctl start命令拉取数据库进程。

    1. gs_ctl start -D /data/ss_test/dn_primary 7. 按照上述步骤再重新执行安装备机。

RDMA使用示例

资源池化特性提供备机实时一致性读功能,主备之间页面交换可选择通过RDMA加速。此章节简要描述如何在资源池化中开启RDMA通信功能。

安装准备

获取安装包

  • 请通过openGauss社区获取HCOM安装包。
  • HCOM4DB的so已包含在openGauss安装包中。如果需要自行编译,可以从Gitee获取源码。

环境要求

表 1 环境要求

项目 配置描述 说明
网卡 具体型号根据实际情况确定,例如Mellanox的CX4/CX5系列网卡。 需要支持RDMA和以太网并开启RDMA协议,开启RDMA协议的具体步骤请参见《RDMA网络指导》。
交换机 - 默认使用RDMA协议,需要配置无损网络。
服务器 - 默认使用RDMA协议,需要配置无损网络。
操作系统 Arm:openEuler 22.03 LTS 同一版本,因内核小版本不一致,或存在内核组件安装时报不兼容错误,需要修改OS weak-modules脚本,具体修改方法请参见《OS兼容性weak-modules脚本修改方法》。
软件 MLNX_OFED_LINUX 开启RDMA协议,需要安装RDMA网卡驱动。 OS和OFED的配套关系请参见表2。
openGauss-All-{version}-openEuler22.03-aarch64.tar.gz openGauss安装包。
BoostKit-hcom_1.0.0_openeuler2003_aarch64.tar.gz HCOM安装包。

表 2 OS和OFED配套关系

OS版本 OFED版本
openEuler 22.03 LTS MLNX_OFED_LINUX-5.8-1.1.2.1-openeuler22.03-aarch64.tgz

安装卸载

将相关软件放在指定路径,并设置环境变量,部署HCOM4DB,后设置openGauss数据库配置项,重启数据库,即可启用RDMA特性。

前置条件

  • 开启RDMA功能依赖CX4/CX5网卡,安装RDMA网卡驱动。
  • openGauss已部署完成,默认数据库管理用户为omm。
  • 获取对应操作系统和CPU架构的HCOM安装包,例如:BoostKit-hcom_1.0.0_openeuler2003_aarch64.tar.gz。
  • 主备节点已存在“${GAUSSHOME}/lib“目录,该目录默认包含HCOM4DB的so文件libhcom4db.so。

操作步骤

  1. 以数据库管理用户omm登录节点,并上传HCOM安装包,上传目录仅omm用户有写权限。
  2. 进入安装包上传目录,解压缩HCOM安装包。

```

```

tar -xzvf BoostKit-hcom_1.0.0_openeuler2003_aarch64.tar.gz —no-same-owner 3. 将libhcom.so拷贝至指定路径“${GAUSSHOME}/lib/“。

资源池化安装与使用 - 图2 说明: 建议用户根据业务使用情况,设置so文件权限最小化。

```

```

cp -f BoostKit-hcom_1.0.0_openeuler2003_aarch64/hcom/lib/libhcom.so ${GAUSSHOME}/lib/ 4. 设置环境变量OCK_RPC_LIB_PATH(libhcom4db.so的路径)和HCOM4DB_LIB_PATH(libhcom.so的路径)。

1. export OCK_RPC_LIB_PATH=${GAUSSHOME}/lib 2. export HCOM4DB_LIB_PATH=${GAUSSHOME}/lib 5. 修改postgresql.conf配置文件。

  1. 打开${PGDATA}/postgresql.conf文件。

    1. vim ${PGDATA}/postgresql.conf 2. 按“i”进入编辑模式。将参数“ss_interconnect_type“的值改为RDMA,添加配置项ss_rdma_work_config。

    1. ss_interconnect_type=RDMA 2. ss_rdma_work_config ='6 10' # OCK RDMA使用用户态poll方式,并绑定cpu [6 10],空格分开 3. 按“Esc”键,输入**:wq!**,按“Enter”保存并退出编辑。 6. (可选)退出om_monitor进程。

如果om_monitor进程存在,则需要执行此操作。

1. gs_om -t killmonitor 7. 重启数据库使RDMA生效。

  1. 停止openGauss。

    1. cm_ctl stop 2. 启动openGauss。

    1. cm_ctl start

    资源池化安装与使用 - 图3 说明: 如果启动失败请根据openGauss日志目录下的“postgresql-YYYY-MM-DD_HHMMSS.log”日志信息排查错误。

SCRLock使用示例

介绍

SCRLock,全称smart cached remote lock,是一个带有本地锁缓存的分布式锁SDK。本章节主要介绍openGauss数据库SCRLock特性的安装使用,指导用户顺利完成操作。在资源池化场景下使用SCRLock提供分布式锁能力,提高分布式锁性能。

安装准备

获取安装包

请通过openGauss社区获取SCRLock安装包。

环境要求

表 1 环境要求

项目 配置描述 说明
网卡 具体型号根据实际情况确定,例如Mellanox的CX4/CX5系列网卡。 需要支持RDMA和以太网并开启RDMA协议,开启RDMA协议的具体步骤请参见《RDMA网络指导》。
操作系统 - Arm - openEuler 22.03 LTS - openEuler 20.03 LTS - openEuler 20.03 LTS SP1 - openEuler 20.03 LTS SP3 - x86 - openEuler 22.03 LTS - openEuler 20.03 LTS - openEuler 20.03 LTS SP1 - openEuler 20.03 LTS SP3 同一SP版本,因内核小版本不一致,或存在内核组件安装时报不兼容错误,需要修改OS weak-modules脚本,具体修改方法请参见《OS兼容性weak-modules脚本修改方法》。
软件 MLNX_OFED_LINUX 开启RDMA协议,需要安装RDMA网卡驱动。OS和OFED的配套关系请参见表2。
- OCK_scrlock_openEuler-20.03-LTS-SP1-aarch64.tar.gz - OCK_scrlock_openEuler-20.03-LTS-SP1-x86_64.tar.gz - OCK_scrlock_openEuler-20.03-LTS-SP3-aarch64.tar.gz - OCK_scrlock_openEuler-20.03-LTS-SP3-x86_64.tar.gz - OCK_scrlock_openEuler-20.03-LTS-aarch64.tar.gz - OCK_scrlock_openEuler-20.03-LTS-x86_64.tar.gz - OCK_scrlock_openEuler-22.03-LTS-aarch64.tar.gz - OCK_scrlock_openEuler-22.03-LTS-x86_64.tar.gz SCRLock安装包。openEuler-22.03-LTS-SP1、openEuler-22.03-LTS表示操作系统,aarch64、x86_64表示服务器架构,具体SCRLock安装包请用户根据实际情况选择。

表 2 OS和OFED配套关系

OS版本 OFED版本
x86 Arm
openEuler 20.03 LTS MLNX_OFED_LINUX-5.4-3.6.8.1-openeuler20.03-x86_64.tgz MLNX_OFED_LINUX-5.4-3.1.0.0-openeuler20.03-aarch64.tgz
openEuler 20.03 LTS SP1 MLNX_OFED_LINUX-5.4-3.6.8.1-openeuler20.03sp1-x86_64.tgz MLNX_OFED_LINUX-5.4-3.1.0.0-openeuler20.03sp1-aarch64.tgz
openEuler 20.03 LTS SP3 MLNX_OFED_LINUX-5.8-1.1.2.1-openeuler20.03sp3-x86_64.tgz MLNX_OFED_LINUX-5.8-1.1.2.1-openeuler20.03sp3-aarch64.tgz
openEuler 22.03 LTS MLNX_OFED_LINUX-5.8-1.1.2.1-openeuler22.03-x86_64.tgz MLNX_OFED_LINUX-5.8-1.1.2.1-openeuler22.03-aarch64.tgz

安装卸载

一键部署SCRLock特性

SCRLock提供简易部署脚本,输入安装路径、安装用户和安装的节点信息,即可一键部署。

  • 前置条件

  • 开启RDMA功能依赖CX4/CX5网卡。

  • openGauss已部署完成。
  • 获取对应操作系统和CPU架构的SCRLock安装包,例如:OCK_scrlock_openEuler-20.03-LTS-SP1-aarch64.tar.gz。
  • 主备节点已存在“${GAUSSHOME}/lib“目录。
  • 所有需要部署SCRLock的服务器,需要相同的用户和密码,并且该用户需要具备执行rmmod、rpm、depmod、modprobe命令权限。
  • 操作步骤

  • 以<SCRLock-install-user>登录节点并上传安装包,在安装包所在目录执行以下命令解压缩安装包。

    1. tar -xzvf OCK_scrlock_openEuler-20.03-LTS-SP1-aarch64.tar.gz

    解压目录内的文件如下。

    文件名 说明
    OCK_scrlock_openEuler_aarch64.tar.gz 源文件
    OCK_scrlock_openEuler_aarch64.tar.gz.txt 签名文件
    OCK_scrlock_openEuler_aarch64.tar.gz.cms 描述文件
    2. 解压源文件压缩包。

    1. tar -xzvf OCK_scrlock_openEuler_aarch64.tar.gz

    解压后得到如下文件。

    文件名 说明
    scrlock_lib so文件
    scripts 安装脚本
    umdk_rpm rpm依赖包
    bin 签名验证文件
    3. 使用“bin“目录下的verification二进制,进行软件包签名验证。

    1. ./bin/verification OCK_scrlock_openEuler_aarch64.tar.gz OCK_scrlock_openEuler_aarch64.tar.gz.cms OCK_scrlock_openEuler_aarch64.tar.gz.txt

    资源池化安装与使用 - 图4 说明: verification可执行二进制需要三个参数,按先后顺序分别是:源文件、签名文件、描述文件。

    • 验证成功控制台会输出:

    1. Starting to verify OCK_scrlock_openEuler_aarch64.tar.gz... 2. Verify the source file passed. 3. Verify the sha file passed. - 验证失败控制台会输出:

    1. Starting to verify OCK_scrlock_openEuler_aarch64.tar.gz... 2. ... 3. Verify the source file failed.

    或者

    1. Starting to verify OCK_scrlock_openEuler_aarch64.tar.gz... 2. ... 3. Verify the sha file failed.

    资源池化安装与使用 - 图5 说明: 校验失败说明此安装包已被篡改,建议重新获取安装包后再次校验。 4. 安装包验证成功后,进入“scripts“目录,准备执行部署脚本。

    1. cd scripts 5. 执行部署脚本,并根据提示输入<SCRLock-install-user>密码。

    1. sh scrlock_install.sh -H '192.168.4.164 192.168.4.165 192.168.4.166' -U omm -G dbgrp -D /home/omm/lib

    资源池化安装与使用 - 图6 说明:

    • -H:集群IP地址。例如:‘192.168.4.164 192.168.4.165 192.168.4.166’
    • -U:数据库管理用户名。例如:omm
    • -G:数据库管理用户组。例如:dbgrp
    • -D:“${GAUSSHOME}/lib“库路径。例如:“/home/omm/lib“
    • -h:查看帮助信息。 由于部署脚本的操作需要高权限用户,请在操作执行完成后关闭高权限用户SSH远程登录服务器的权限,以提升系统安全性。
    • 切换至数据库管理用户。

    1. su - omm 7. (可选)kill om_monitor进程。

    1. gs_om -t killmonitor 8. 加载环境变量。

    1. source ~/.bashrc

    资源池化安装与使用 - 图7 须知: 6~8也需要在备节点执行。

启用SCRLock特性

启用SCRLock特性,需要通过修改配置文件,重启数据库使其生效。

  • 前提条件
  • 主备节点已安装包含SCRLock特性的openGauss版本。
  • 已完成SCRLock特性的一键部署。
  • 操作步骤

  • 以数据库管理用户登录管理节点。

  • 配置数据库的postgresql.conf文件。

    1. 打开postgresql.conf文件。

      1. vim postgresql.conf 2. 按“i”进入编辑模式,找到如下参数,根据实际情况进行修改。参数说明请参见表1。

      1. ss_enable_scrlock = off 2. ss_enable_srclock_sleep_mode = off 3. ss_scrlock_server_port = 8000 4. ss_scrlock_worker_count = 2 5. ss_scrlock_worker_bind_core = '' 6. ss_scrlock_server_bind_core = ''

      表 1 SCRLock的配置参数

      参数名称 参数类型 参数说明 取值范围 默认值
      ss_enable_scrlock 布尔型 用于开启或关闭SCRLock。 - on,表示开启SCRLock。 - off,表示关闭SCRLock。 off
      ss_enable_scrlock_sleep_mode 布尔型 用于开启或关闭SCRLock睡眠模式。 - on,表示开启睡眠模式。 - off,表示关闭睡眠模式。 on
      ss_scrlock_server_port 整型 表示SCRLock服务端侦听端口号。 1024~65535 8000
      ss_scrlock_worker_count 整型 表示SCRLock客户端worker数量。 2~16 2
      ss_scrlock_worker_bind_core 字符串 表示SCRLock worker占用起止CPU。 “开始CPU编号 结束CPU编号”,CPU编号中间空格分开,例如:”10 15” “”
      ss_scrlock_server_bind_core 字符串 表示SCRLock server占用起止CPU。 “开始CPU编号 结束CPU编号”,CPU编号中间空格分开,例如:“10 15” “”
      3. 按“Esc”键,输入 :wq!,按“Enter”保存并退出编辑。
      3. 重启数据库使SCRLock特性生效。
    2. 停止openGauss。

      1. cm_ctl stop 2. 启动openGauss。

      1. cm_ctl start

      资源池化安装与使用 - 图8 说明: 如果启动失败请根据openGauss日志目录下的“postgresql-YYYY-MM-DD_HHMMSS.log”日志信息排查错误。 4. 验证SCRLock特性是否启用成功。

    1. gsql -d postgres -p 16600 -c "show ss_enable_scrlock"

    如果回显如下内容,则启用成功。

    1. ss_enable_scrlock 2. ------------------- 3. on 4. (1 row)

    资源池化安装与使用 - 图9 说明:

    • -p 16600:16600为数据库端口号,请根据实际情况修改。
    • 如需查看启用SCRLock特性的日志文件,可以执行以下命令动态查看最后20行。

    1. tail -fn20 ${GAUSSLOG}/pg_log/scrlock*.log

关闭SCRLock特性

关闭SCRLock特性,需要重启数据库使配置生效。

  • 操作步骤

  • 配置数据库根目录下的postgresql.conf文件。

    1. 打开postgresql.conf文件。

      1. vim postgresql.conf 2. 按“i”进入编辑模式。将参数“ss_enable_scrlock“的值改为“off“,关闭SCRLock特性。

      1. ss_enable_scrlock = off 3. 按“Esc”键,输入 :wq!,按“Enter”保存并退出编辑。 2. 停止openGauss。

    1. cm_ctl stop 3. (可选)如需卸载SCRLock特性可执行此步骤。删除SCRLock动态库文件,并清除环境变量。

    1. rm -f /home/omm/lib/libscrlock.so 2. unset OCK_SCRLOCK_LIB_PATH

    其中,“/home/omm/lib/”表示libscrlock.so所在目录的绝对路径。 4. 重启openGauss。

    1. cm_ctl start