部署方式:服务器单节点安装

一、openGauss部署准备

已完成用户组和普通用户的创建。

所有服务器操作系统和网络均正常运行。

准备服务安装包:

下载方式:官网下载(https://openGauss.org/zh/download/

选择x86服务器版本,选择极简版下载

普通用户必须有数据库包解压路径、安装路径的读、写和执行操作权限,并且安装路径必须为空:

mkdir -p /opt/software/openGauss
chown -R openGauss:openGauss /opt/software/

普通用户对下载的openGauss压缩包有执行权限

安装前请检查指定的openGauss端口是否被占用,如果被占用请更改端口或者停止当前使用端口进程。

# 没有任何输出为端口无占用
netstat -anpt | grep 5432

操作系统版本:Ubuntu 22.04.5 LTS

openGauss支持的硬件平台

openGauss支持运行在ARM服务器和通用的x86服务器上:

  • 支持ARM服务器和基于x86_64的通用PC服务器。
  • 支持本地存储(SATA、SAS、SSD)。
  • 支持千兆、万兆Ethernet网络。

openGauss支持的操作系统

ARM:

  • openEuler 20.03 LTS(推荐采用此操作系统)
  • openEuler 22.03 LTS
  • openEuler 24.03 LTS
  • 统信V20
  • 麒麟V10
  • Asianux 7.5

X86:

  • openEuler 20.03 LTS
  • openEuler 22.03 LTS
  • openEuler 24.03 LTS
  • CentOS 7.6
  • Asianux 7.6
  • 麒麟V10

二、部署openGauss

解压openGauss压缩包到安装目录(本次测试安装目录为/opt/software/openGauss,请用实际值替换)

tar -jxf openGauss-Server-6.0.2-openEuler20.03-x86_64.tar.bz2 -C /opt/software/openGauss

进入解压后目录下的simpleInstall

cd /opt/software/openGauss/simpleInstall

执行install.sh脚本安装openGauss

sh install.sh  -w "test_openGauss@123" -p 5432 &&source ~/.bashrc

说明:-w:初始化数据库密码(gs_initdb指定),因安全需要,此项必须设置

p:指定openGauss端口号,如不指定,默认为5432。

h|–help:打印使用说明。

注意:此处执行报错:install.sh: 11: Syntax error: “(” unexpected

重新执行install.sh脚本安装openGauss

bash install.sh  -w "test_openGauss@123" -p 5432 &&source ~/.bashrc

刚刚的报错已经消失,但是有新的报错

ls /opt/software/openGauss/lib/* | grep libreadline.so*
# 软件库文件没有这个包

查找系统是否自带

系统自带,但是版本高于服务部署依赖的libreadline.so.7版本

将此高版本软连接到服务lib库下:

cd /opt/software/openGauss/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/libreadline.so.8.1 ./libreadline.so.7
source ~/.bashrc

重新执行install.sh脚本安装openGauss,正常安装

安装执行完成后,使用ps和gs_ctl查看进程是否正常

ps ux | grep gaussdb

服务已启动

gs_ctl query -D /opt/software/openGauss/data/single_node

三、报错原因分析

报错1:找不到libreadline.so.7库文件

原因:

在Ubuntu 22.04中,默认提供的Readline库版本可能已经是8或更高

但是openGauss的安装脚本运行中依赖的是旧版本的libreadline.so.7库文件,版本不兼容导致部署失败

解决方案

在当前系统中查找此库文件(若系统不自带则直接下载)

find /usr -name "libreadline.so.*" 2>/dev/null

系统自带,但是版本与服务部署依赖的libreadline.so.7版本不匹配

将此不匹配版本软连接到服务lib库下并命令为libreadline.so.7:

cd /opt/software/openGauss/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/libreadline.so.8.1 ./libreadline.so.7
source ~/.bashrc

重新执行install.sh脚本安装openGauss,正常安装

报错2:Syntax error: “(” unexpected

原因:

脚本内容如下:

脚本在使用 sh命令时失败,而使用 bash命令则可以正常运行。,其根本原因与操作系统环境(Ubuntu 22.04)和脚本解释器有关。

根源分析

  1. 核心问题在于,使用的 sh命令和 bash命令在 Ubuntu 系统上可能指向两个不同的 Shell 解释器,而脚本包含了一些 bash特有的语法。
  2. sh与 bash的区别:在大多数 Linux 发行版上,/bin/sh是一个指向默认系统 Shell 的符号链接。在 Ubuntu上,自 6.10 版本开始,为了追求更快的启动速度,/bin/sh默认指向的是 /bin/dash(一种轻量级的 Shell),而不是 /bin/bash。dash遵循 POSIX 标准,但功能比 bash简单,不支持某些 bash的扩展语法。
  3. 脚本的 Shebang 行:脚本第一行是 #!/bin/bash,这被称为 Shebang 行。它明确指定了这个脚本应该由 bash解释器来执行。当使用 bash install.sh或直接赋予脚本执行权限后通过 ./install.sh运行时,系统会读取这一行并使用 bash,因此脚本可以正常运行。
  4. 错误发生的具体场景:当使用 sh install.sh命令时,实际上是显式地指定了使用 sh(在 Ubuntu 上就是 dash)来运行这个脚本。此时,脚本第一行的 Shebang 声明 #!/bin/bash被当作一个普通的注释行忽略掉了。整个脚本会被 dash尝试解析。
  5. 语法错误来源:dash在解析到第11行 function usage()时遇到了问题。虽然 function关键字是 bash中定义函数的有效方式(function usage()或 usage()),但更为严格的 POSIX Shell 标准(如 dash)只支持省略 function关键字的函数定义格式(即 usage())。因此,dash不认识 function这个关键字,在看到其后的括号 (时,就会报告 Syntax error: “(” unexpected。

对比两种情况:

特性 使用 sh install.sh(失败) 使用 bash install.sh(成功)
实际解释器 /bin/dash(Ubuntu 默认) /bin/bash
是否尊重 Shebang 否,强制使用 sh(dash) 是,使用 Shebang 指定的 bash
函数语法支持 仅支持 POSIX 标准(如 usage()) 支持 bash扩展(如 function usage())
结果 遇到 function关键字报错 正常解析和执行

解决方案

  1. 方法一:使用正确的命令执行脚本(推荐)

既然脚本已经明确指定了需要 bash,应该始终使用 bash命令来运行它:

bash install.sh -w "test_openGauss" -p 5432 && source ~/.bashrc

将脚本改为直接执行(更规范的方法)首先,赋予脚本可执行权限,然后通过路径直接执行。系统会自动读取 Shebang 行来选择正确的解释器。

chmod +x install.sh
./install.sh -w "test_openGauss" -p 5432 && source ~/.bashrc
  1. 方法二:修改脚本代码以兼容 POSIX Shell(不推荐)

理论上,可以将脚本中的所有 function关键字删除,只保留函数名和括号,使其符合 POSIX 标准,从而可以用 sh执行。

例如:

# 将
function usage()
# 改为
usage()

但请注意:如果脚本其他部分还使用了 bash特有的其他语法(如数组 [[ ]]条件判断等),修改起来会很复杂且有风险。对于已写好的复杂脚本,此方法不推荐。

四、结语

openGauss凭借其高性能、高可用、高安全、高可靠以及卓越的可维护性,已然成为企业数字化转型中数据库选型的优选。它不仅通过面向多核的并发控制、行列混合存储、向量化引擎等技术实现了百亿级数据秒级响应的极致性能,更通过主备多种部署模式、数据页CRC校验、备机并行恢复等机制确保了金融级的高可用性与可靠性,RTO控制在10秒以内。在至关重要的安全层面,openGauss提供全密态计算、全方位访问控制与审计等特性,为数据构建端到端的安全防护体系。而其独特的闪回与回收站机制、AI驱动的智能参数调优与运维诊断能力(AI4DB),则大幅降低了数据库的日常运维难度和潜在风险。市场的选择是对技术价值最直接的验证。

截至2024年,openGauss在线下集中式关系型数据库新增市场份额已达30.2%,其技术路线占比超越传统开源数据库,成为主流选择之一,并已在金融、电信、政务、能源等国之重器行业的核心系统中经受住了海量数据与高并发业务的严苛考验。更重要的是,openGauss采用开放的开源协议,为企业和开发者提供了自由定制和持续创新的坚实基座。因此,对于寻求一款能够同时支撑关键业务稳定运行与未来创新探索的企业而言,选择openGauss,不仅仅是选择一款强大的数据库产品,更是选择了一条协同创新、持续进化的技术发展路径。我们诚挚地推荐各行业用户深入评估并采用openGauss,让它成为您业务发展的可靠数据基石,共同拥抱数智时代的无限可能

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐