Bootstrap

openGauss5.0.0基于CentOS7.x编译环境搭建

openGauss 是一款开源的关系型数据库管理系统,具有多核高性能、全链路安全性、智能运维等企业级特性。其内核最早源自开源数据库 PostgreSQL,通过深度优化和改进,融合了华为在数据库领域多年的技术积累和内核经验。openGauss 适用于金融、电信、政府等领域的大规模数据处理和高并发事务处理,也适用于云原生应用和大数据平台,支持弹性扩展和高可用部署。

1.操作系统环境要求

openGauss支持以下操作系统:

  • CentOS 7.x(x86_64 架构)
  • openEuler-20.03-LTS(aarch64、x86_64架构)
  • openEuler-22.03-LTS(aarch64、x86_64 架构)
  • Kylin-V10(aarch64 架构)
  • Asianux 7.6(x86_64架构)
  • Asianux 7.5(aarch64 架构)
  • FusionOS 22(aarch64、x86 架构)
2.软件依赖
软件推荐版本
libaio-devel0.3.109-13
flex2.5.31及以上版本
bison2.7-4
ncurses-devel5.9-13.20130511
glibc-devel2.17-111
patch2.7.1-10
lsb_release4.1
readline-devel7.0-13

在CentOS7.x系统中,我们可以通过如下命令进行依赖软件安装:

sudo yum install -y libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel git wget tree
3.软件编译

下图是对编译流程的大致概括,详细内容见下文:
图片来源于openGauss官网

3.1 源代码获取
  1. 新建编译目录
sudo mkdir -p /mnt/workspace
  1. 利用git获取openGauss5.0.0源代码
cd /mnt/workspace
git clone --branch 5.0.0 https://gitee.com/opengauss/openGauss-server.git

[root@localhost openGauss-server]# tree -d -L 1 /mnt/workspace/openGauss-server/src
/mnt/workspace/openGauss-server/src
├── bin
├── common
├── gausskernel
├── include
├── lib
├── makefiles
├── test
└── tools
8 directories
3.2 第三方软件仓库获取

openGauss的编译需要提前把所依赖的开源第三方软件进行编译和构建。这些开源的第三方软件需要单独进行下载,至于第三方开源软件的编译过程,我将会在后面的文章中进行说明,为了节省大家编译时间,可以直接下载编译好的第三方软件,如下为5.0.0部份操作系统已经编译完成的第三方软件安装包下载链接:

操作系统系统架构下载链接
openEuleraarchhttps://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/binarylibs/openGauss-third_party_binarylibs_openEuler_arm.tar.gz
openEulerx86https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/binarylibs/openGauss-third_party_binarylibs_openEuler_x86_64.tar.gz
Centosx86https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/binarylibs/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
  1. 在Centos7.x利用wget进行三方软件下载
cd /mnt/workspace

sudo wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/binarylibs/openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz
  1. 下载完毕后执行解压并重命名
# tar 命令的参数`-C`指定解压目录
sudo tar -xzvf openGauss-third_party_binarylibs_Centos7.6_x86_64.tar.gz -C /mnt/workspace

sudo mv /mnt/workspace/openGauss-third_party_binarylibs_Centos7.6_x86_64 /mnt/workspace/binarylibs
3.3.软件安装编译

openGauss提供整个安装包的编译打包过程脚本build.sh,如下我将利用一键式编译脚本build.sh给大家讲解整个编译过程。

  1. 进入编译脚本目录
cd /mnt/workspace/openGauss-server
  1. 编译安装openGauss
chmod +x build.sh
sh build.sh -m release -3rd /mnt/workspace/binarylibs

注意:

-m [debug | release | memcheck] 表示有三个目标版本可以选择:
1. release:生成release版本的二进制程序。此版本编译时,通过配置GCC高级优化选项,去除内核调试代码。此选项通常在生成环境或性能测试环境中使用。
2. debug:表示生成debug版本的二进制程序。此版本编译时,增加了内核代码调试功能,一般用于开发自测环境。
3. memcheck:表示生成memcheck版本的二进制程序。此版本编译时,在debug版本的基础上增加了ASAN功能,用于定位内存问题。

-3rd [binarylibs path]为binarylibs的路径。默认设置为当前代码文件夹下存在binarylibs,因此如果binarylibs被移至openGauss-server中,或者在openGauss-server中创建了到binarylibs的软链接,则不需要指定此参数。但请注意,这样做的话,该文件很容易被git clean命令删除。

该脚本中的每个选项都有一个默认值。选项数量少,依赖简单。因此,该脚本易于使用。如果实际需要的参数值与默认值不同,请根据实际情况配置。
  1. 显示如下内容,则表示编译完成
openGauss installation complete.
now, all build has finished!
  • 编译后软件安装路径为:/mnt/workspace/openGauss-server/mppdb_temp_install
  • 编译后的二进制放置路径为:/mnt/workspace/openGauss-server/mppdb_temp_install/bin
  • 编译日志为:./build/script/makemppdb_pkg.log
[root@localhost openGauss-server]# tree -L 1 /mnt/workspace/openGauss-server/mppdb_temp_install
/mnt/workspace/openGauss-server/mppdb_temp_install
├── bin
├── etc
├── include
├── jre
├── lib
└── share
6 directories, 0 files
  1. 数据库初始化和启动

数据库的启动需要单独的用户以及赋予对应的权限才能进行启动,可以参考如下步骤进行数据库的初始化和启动:

1.新建数据库用户并授权

sudo groupadd dbgroup
sudo useradd -g dbgroup omm
sudo passwd omm
sudo chown omm:dbgroup /mnt/workspace/openGauss-server/mppdb_temp_install
  • 授权数据库用户权限
sudo chown omm:dbgroup /mnt/workspace/openGauss-server/mppdb_temp_install # 将安装目录权限授予 omm 用户
  1. 新建数据存储目录:
sudo mkdir -p /home/omm/opt/data
sudo chown -R omm:dbgroup /home/omm/opt/data
  1. 配置数据库用户环境变量:
    切换到omm用户进行环境变量配置
# 在~/.bash_profile文件新增如下配置:
export CODE_BASE=/mnt/workspace/openGauss-server
export GAUSSHOME=$CODE_BASE/mppdb_temp_install/
export LD_LIBRARY_PATH=$GAUSSHOME/lib::$LD_LIBRARY_PATH
export PATH=$GAUSSHOME/bin:$PATH

# 保存文件,并重载环境变量
source ~/.bash_profile
  1. 初始化数据库
# 切换到omm用户进行操作
su - omm
# 初始化数据库
gs_initdb -w opengsd~123 -D /home/omm/opt/data --nodename 'sgnode' --locale='en_US.UTF-8'

-w 设定密码
-D 设定初始化数据存储目录
--nodename 设定节点命令

  1. 启动数据库
#以单节点方式进行启动
gs_ctl start -D /home/omm/opt/data -Z single_node -l logfile
  1. 连接数据库测试
#数据库默认端口为: 5432
gsql -d postgres

默认端口可以通过如下命令修改:

su - omm
#$port为自己设定的端口号
gs_guc set -D /home/omm/opt/data -c "port=$port"
gs_ctl restart -D /home/omm/opt/data -Z single_node -l logfile
总结

本文详细介绍了openGauss数据库的操作系统环境要求、软件依赖、源码获取、第三方软件仓库下载、软件编译、数据库初始化及启动的全过程。

FAQ
  1. out of memory allocating xxx bytes after a total of xxx bytes
    机器配置较低,内存不足,并发数太大导致错误,可以修改build.sh文件里面的配置。
参考资料
  1. openGauss官方文档
  2. openGauss代码仓库

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;