openEuler 22.03 LTS SP4安装华为opengauss 22.03 LTS版本数据库,一键复制安装使用,保姆级教程

openEuler 是由华为发起、开源社区维护的企业级 Linux 操作系统。它主要有以下几个特点:

内核与架构:基于 Linux 内核,原生支持 x86-64 和 ARM64 (AArch64) 等多种架构,能充分发挥 Intel、AMD 及鲲鹏等芯片性能。

定位与性能:专为服务器、云计算和边缘计算设计,在调度、内存和 IO 方面做了深度优化,特别适合高并发的数据库场景。

生态与兼容:与 OpenHarmony 生态打通,并且完美兼容你准备安装的 openGauss 数据库等华为全栈软件,是同生态下的最优底座。

版本模型:分为长期支持版(LTS,如 22.03)和创新版,服务器生产环境应优先选择 LTS 版本以保证稳定。

我使用的系统版本是openEuler 22.03 LTS SP4。安装的opengauss 22.03 LTS版本。

系统官网链接: openEuler官网

系统镜像下载链接: openEuler 22.03 LTS SP4镜像下载链接

opengauss数据库官网链接: opengauss数据库官网链接


系统我是最小化安装部署的:

1. 安装 Development Tools 与 Base 组包

bash 复制代码
dnf -y group install "Development Tools"

1.1安装依赖包(官网要求)

bash 复制代码
dnf -y install libaio-devel readline-devel expect libedit-devel libxml2-devel lz4-devel numactl-devel unixODBC-devel java-1.8.0-openjdk-devel openblas-devel

安装基本工具

bash 复制代码
dnf -y install vim lrzsz rsync bash-completion wget curl tar unzip net-tools bind-utils psmisc tree htop which bc p7zip
bash 复制代码
dnf -y upgrade

2.下载opengauss数据库

bash 复制代码
mkdir -p /usr/local/src/opengauss && \
cd /usr/local/src/opengauss && \
curl -LO https://opengauss.obs.cn-south-1.myhuaweicloud.com/6.0.5/openEuler22.03/x86/openGauss-All-6.0.5-openEuler22.03-x86_64.tar.gz && \
tar zxf openGauss-All-6.0.5-openEuler22.03-x86_64.tar.gz

2.1解压OM 和 Server 包

bash 复制代码
cd /usr/local/src/opengauss

解压 OM 运维管理工具

bash 复制代码
tar -xf openGauss-OM-6.0.5-openEuler22.03-x86_64.tar.gz

libscript目录。

解压 Server 数据库服务包

bash 复制代码
tar -xjf openGauss-Server-6.0.5-openEuler22.03-x86_64.tar.bz2

bin、etc、include、share、simpleInstall 目录

解压 CM 集群管理(单机也建议解压)

bash 复制代码
tar -zxf openGauss-CM-6.0.5-openEuler22.03-x86_64.tar.gz

tool目录

3.创建安装目标目录

bash 复制代码
mkdir -p /usr/local/opengauss/{app,data,log,tmp,tool,corefile}

4.创建运行用户和组

bash 复制代码
groupadd dbgrp
useradd -g dbgrp -d /home/omm -m omm
echo "你的密码" | passwd --stdin omm

5. 创建 XML 配置文件

bash 复制代码
vim /usr/local/src/opengauss/clusterconfig.xml

value值换成变量使用命令一键替换。

bash 复制代码
cat > /usr/local/src/opengauss/clusterconfig.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <CLUSTER>
        <PARAM name="clusterName" value="opengauss" />
        <PARAM name="nodeNames" value="$(hostname)" />
        <PARAM name="gaussdbAppPath" value="/usr/local/opengauss/app" />
        <PARAM name="gaussdbLogPath" value="/usr/local/opengauss/log" />
        <PARAM name="tmpMppdbPath" value="/usr/local/opengauss/tmp" />
        <PARAM name="gaussdbToolPath" value="/usr/local/opengauss/tool" />
        <PARAM name="corePath" value="/usr/local/opengauss/corefile" />
        <PARAM name="backIp1s" value="$(hostname -I | awk '{print $1}')" />
    </CLUSTER>
    <DEVICELIST>
        <DEVICE sn="node1">
            <PARAM name="name" value="$(hostname)" />
            <PARAM name="azName" value="AZ1" />
            <PARAM name="azPriority" value="1" />
            <PARAM name="backIp1" value="$(hostname -I | awk '{print $1}')" />
            <PARAM name="sshIp1" value="$(hostname -I | awk '{print $1}')" />
            <PARAM name="dataNum" value="1" />
            <PARAM name="dataPortBase" value="15400" />
            <PARAM name="dataNode1" value="/usr/local/opengauss/data" />
            <PARAM name="dataNode1_syncNum" value="0" />
        </DEVICE>
    </DEVICELIST>
</ROOT>
EOF

文件内容示例:

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <CLUSTER>
        <PARAM name="clusterName" value="opengauss" />
        <PARAM name="nodeNames" value="opengauss" />
        <PARAM name="gaussdbAppPath" value="/usr/local/opengauss/app" />
        <PARAM name="gaussdbLogPath" value="/usr/local/opengauss/log" />
        <PARAM name="tmpMppdbPath" value="/usr/local/opengauss/tmp" />
        <PARAM name="gaussdbToolPath" value="/usr /local/opengauss/tool" />
        <PARAM name="corePath" value="/usr/local/opengauss/corefile" />
        <PARAM name="backIp1s" value="192.168.1.100" />
    </CLUSTER>
    <DEVICELIST>
        <DEVICE sn="node1">
            <PARAM name="name" value="opengauss" />
            <PARAM name="azName" value="AZ1" />
            <PARAM name="azPriority" value="1" />
            <PARAM name="backIp1" value="192.168.1.100" />
            <PARAM name="sshIp1" value="192.168.1.100" />
            <PARAM name="dataNum" value="1" />
            <PARAM name="dataPortBase" value="15400" />
            <PARAM name="dataNode1" value="/usr/local/opengauss/data" />
            <PARAM name="dataNode1_syncNum" value="0" />
        </DEVICE>
    </DEVICELIST>
</ROOT>

6.授权 omm 用户

bash 复制代码
chown -R omm:dbgrp /usr/local/opengauss
chown -R omm:dbgrp /usr/local/src/opengauss
chmod 755 -R /usr/local/opengauss

7.切换到 omm 用户,执行预安装

bash 复制代码
su - omm
cd /usr/local/src/opengauss/script
bash 复制代码
python3 gs_preinstall -U omm -G dbgrp -X /usr/local/src/opengauss/clusterconfig.xml --sep-env-file=/home/omm/env.sh

成功了! 看到 Preinstallation succeeded. 就说明预安装已经通过。

两个警告不用管

ini 复制代码
Warning: Installation environment contains some warning messages.
Warning: The omm user does not have permission to set crontab.

这是正常的,不影响安装和使用。第一个是环境检查的常规提示,第二个 crontab 权限问题因为 omm 不是 root,不需要自动清理日志的话完全可以忽略。

8.加载环境变量并安装

bash 复制代码
source /home/omm/env.sh

9.正式安装

bash 复制代码
gs_install -X /usr/local/src/opengauss/clusterconfig.xml

这里要设置的是数据库管理员 omm 的数据库连接密码,跟之前系统用户 omm 的登录密码是两回事。

设置规则

复杂度要求:至少 8 位,包含大写字母、小写字母、数字、特殊符号中的三种

示例:OpenGauss@123、OmM#2026db

两次输入一致即可,输入你设定的密码(不会显示在屏幕上),回车后会提示:

再输一遍确认,然后会继续安装,最终看到:

Successfully started cluster.

Successfully installed database.就完成了。输入你设好的密码就行。

集群状态显示 Normal,一切正常。

现在验证一下
查看数据库状态
bash 复制代码
gs_ctl status -D /usr/local/opengauss/data
连接数据库状态
bash 复制代码
gsql -d postgres -p 15400 -r

连接成功后会进入 openGauss 的命令行界面:

相关推荐
SelectDB20 小时前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶21 小时前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵1 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
Nturmoils1 天前
WHERE 条件别凭习惯写,常用查询先跑一遍
数据库
Databend2 天前
在 AWS 中国峰会逛了一天,我在 Databend 展台看到了 Agent 数据基础设施的新思路
数据库·人工智能·agent
ClouGence3 天前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
anyup3 天前
来简单聊聊鸿蒙开发,万元奖金的事~
前端·华为·harmonyos
飞将3 天前
从零实现数据库(2)——HashIndex + IndexManager
数据库
Nturmoils4 天前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库
渣波4 天前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端