开发者
资源
openGauss在鲲鹏平台上的安装部署与基础调优
openGauss在鲲鹏平台上的安装部署与基础调优
原创
发表于05/06
9770

一、openGauss与鲲鹏平台

openGauss是一款开源关系型数据库,它源自PostgreSQL,在内核层面做了大量优化,尤其在鲲鹏ARM架构上,针对多核并发、内存管理、网络IO进行了深度适配。

环境信息:

操作系统:openEuler 22.03 Server

架构:aarch64(鲲鹏)

配置:4VCPUs 8GiB

openGauss版本:5.1.0

二、安装前准备

2.1 系统环境检查

# 确认操作系统和架构
cat /etc/os-release | grep -E "PRETTY_NAME|VERSION"
# 输出:PRETTY_NAME="openEuler 22.03 LTS"

uname -m
# 输出:aarch64

# 检查内存(建议至少4GB)
free -h
# 输出:
#               total        used        free      shared  buff/cache   available
# Mem:          7.6Gi       1.2Gi       4.8Gi        16Mi       1.6Gi       6.0Gi

# 检查磁盘空间(建议至少10GB可用)
df -h /
# 输出:/dev/vda1        40G   12G   26G  32% /

2.2 创建数据库用户和目录

openGauss不允许用root运行,需要创建专用的操作系统用户:

# 创建dbgrp组和omm用户
sudo groupadd dbgrp
sudo useradd -g dbgrp -m -s /bin/bash omm

# 设置omm用户密码(执行后会提示输入两次密码,请记住密码)
sudo passwd omm

说明:sudo passwd omm是交互式命令,执行后根据提示输入密码并确认。后续切换用户时需要用到此密码。

2.3 配置系统参数

openGauss对系统参数有要求,需要调整内核参数和资源限制:

# 配置内核参数(写入独立配置文件,避免重复追加)
sudo tee /etc/sysctl.d/99-opengauss.conf << 'EOF'
# openGauss优化参数
kernel.sem = 250 32000 100 999
kernel.shmmax = 21474836480
kernel.shmmni = 4096
kernel.shmall = 5242880
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
vm.overcommit_memory = 0
EOF

# 使参数生效
sudo sysctl -p /etc/sysctl.d/99-opengauss.conf

# 配置资源限制(写入独立配置文件)
sudo tee /etc/security/limits.d/99-opengauss.conf << 'EOF'
omm soft nofile 65536
omm hard nofile 65536
omm soft nproc 65536
omm hard nproc 65536
omm soft stack 32768
omm hard stack 32768
EOF

# 关闭透明大页(openGauss建议关闭)
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled

2.4 安装依赖

sudo dnf install -y libaio libnsl ncurses-libs

三、安装openGauss

3.1 下载安装包

# 切换到omm用户(输入之前设置的密码)
su - omm

# 下载openGauss极简版安装包(鲲鹏架构)
cd ~
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.1.0/arm_2203/openGauss-5.1.0-openEuler-64bit.tar.bz2

# 解压
mkdir -p ~/openGauss
tar -jxf openGauss-5.1.0-openEuler-64bit.tar.bz2 -C ~/openGauss

openGauss提供多种安装包,极简版适合学习和测试,企业版适合生产环境。本文使用极简版。

3.2 初始化数据库实例

cd ~/openGauss/bin

# 设置openGauss必需的环境变量
export GAUSSHOME=/home/omm/openGauss
export PATH=$GAUSSHOME/bin:$PATH
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH

# 初始化数据库(指定节点名、数据目录和编码)
gs_initdb --pgdata=/home/omm/data --nodename=node1 --encoding=UTF-8 --lc-collate=C --lc-ctype=C

初始化过程输出:

The files belonging to this database system will be owned by user "omm".
This user must also own the server process.

The database cluster will be initialized with locale "C".
The default text search configuration will be set to "english".

creating directory /home/omm/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
...
Success. You can start the database server using:
    gs_ctl -D /home/omm/data -l /home/omm/data/logfile start

持久化环境变量(推荐):将下面三行追加到 ~/.bashrc,这样每次登录 omm 用户时自动生效,无需重复 export:

echo "export GAUSSHOME=/home/omm/openGauss" >> ~/.bashrc
echo "export PATH=\$GAUSSHOME/bin:\$PATH" >> ~/.bashrc
echo "export LD_LIBRARY_PATH=\$GAUSSHOME/lib:\$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc

3.3 配置远程访问

默认只允许本地连接,需要修改配置以支持远程访问:

# 修改pg_hba.conf,添加远程访问规则
echo "host all all 0.0.0.0/0 sha256" >> /home/omm/data/pg_hba.conf

# 修改postgresql.conf,监听所有地址(兼容注释和未注释两种格式)
sed -i "s/^[#]*[ ]*listen_addresses[ ]*=.*$/listen_addresses = '*'/" /home/omm/data/postgresql.conf
```

### 3.4 启动数据库

```
# 确保环境变量已设置(如果新开shell需要重新执行)
export GAUSSHOME=/home/omm/openGauss
export PATH=$GAUSSHOME/bin:$PATH
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH

# 启动openGauss
gs_ctl start -D /home/omm/data -l /home/omm/data/logfile

# 输出:
# [2026-04-29 17:30:00.000][8560][][gs_ctl]: gs_ctl started, datadir is /home/omm/data
# [2026-04-29 17:30:01.000][8560][][gs_ctl]: another server might be running
# [2026-04-29 17:30:02.000][8560][][gs_ctl]: waiting for server to start... done
# [2026-04-29 17:30:02.000][8560][][gs_ctl]: server started
```

### 3.5 验证安装

```
# 使用gsql连接数据库
gsql -d postgres -p 5432

# 输出:
# gsql ((openGauss 5.1.0 build ...) compiled at 2024-01-01 00:00:00 commit 0 last mr  )
# Non-SSL connection (SSL connection is recommended when require high security)
# Type "help" for help.
#
# openGauss=#

# ⚠️ openGauss 5.1.0 首次登录必须修改默认密码,否则无法执行查询
# 将 omm 用户的密码修改为自定义密码(例如 openGauss@2026)
openGauss=# ALTER ROLE omm IDENTIFIED BY 'openGauss@2026' REPLACE 'Admin@123';
# 输出:ALTER ROLE

# 查看版本
openGauss=# SELECT version();
#                                                    version
# ---------------------------------------------------------------------------------------------------------
#  (openGauss 5.1.0 build 0f5183f7) compiled at 2024-01-01 00:00:00 commit 0 last mr   on aarch64-unknown-linux-gnu
# (1 row)

# 查看数据库列表
openGauss=# \l
#                       List of databases
#    Name    | Owner | Encoding | Collate | Ctype | Access privileges
# -----------+-------+----------+---------+-------+-------------------
#  postgres  | omm   | UTF8     | C       | C     |
#  template0 | omm   | UTF8     | C       | C     | =c/omm            +
#            |       |          |         |       | omm=CTc/omm
#  template1 | omm   | UTF8     | C       | C     | =c/omm            +
#            |       |          |         |       | omm=CTc/omm
# (3 rows)

# 退出
openGauss=# \q
```

## 四、基础调优

### 4.1 内存参数调优

**openGauss的内存配置直接影响性能。核心参数在**`postgresql.conf`中修改:

```
# 编辑配置文件
vim /home/omm/data/postgresql.conf
```

**关键参数调整(以8GB内存服务器为例):**


| **参数**                   | **默认值** | **建议值** | **说明**                           |
| -------------------------- | ---------- | ---------- | ---------------------------------- |
| **shared\_buffers**        | **128MB**  | **2GB**    | **共享缓冲区,建议为内存的25%**    |
| **effective\_cache\_size** | **4GB**    | **6GB**    | **查询优化器的缓存估计值**         |
| **work\_mem**              | **64MB**   | **128MB**  | **排序和哈希操作的内存上限**       |
| **maintenance\_work\_mem** | **512MB**  | **1GB**    | **维护操作(VACUUM等)的内存上限** |

```
# 修改后重启生效(如环境变量未设置,先执行 export GAUSSHOME=/home/omm/openGauss)
gs_ctl restart -D /home/omm/data -l /home/omm/data/logfile
```

### 4.2 连接数调优

```
# 在gsql中查看当前连接数配置
gsql -d postgres -p 5432 -c "SHOW max_connections;"
# 输出:100

# 修改最大连接数(postgresql.conf)
# max_connections = 500
```

**连接数不是越大越好,每个连接占用内存。公式参考:**`shared_buffers + (work_mem * max_connections) < 总内存`。

### 4.3 WAL日志调优

**WAL(Write-Ahead Log)是openGauss的数据安全保障机制,也是IO密集型操作。以下参数添加到**`postgresql.conf`中:

```
# WAL相关参数
wal_level = logical          # 逻辑复制级别(支持更多功能)
max_wal_size = 2GB           # WAL日志最大尺寸
min_wal_size = 512MB         # WAL日志最小尺寸
checkpoint_completion_target = 0.8  # 检查点完成目标
```

### 4.4 查看运行状态

```
# 查看数据库运行状态(如环境变量未设置,先执行下面的export)
# export GAUSSHOME=/home/omm/openGauss
# export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
gs_ctl query -D /home/omm/data

# 在gsql中查看活动连接
gsql -d postgres -p 5432 -c "SELECT state, count(*) FROM pg_stat_activity GROUP BY state;"
# 输出示例:
#  state  | count
# --------+-------
#  active |     1
#  idle   |     2
# (2 rows)

# 查看数据库大小
gsql -d postgres -p 5432 -c "SELECT pg_size_pretty(pg_database_size('postgres'));"
# 输出:77 MB

五、创建业务数据库和用户

# 连接数据库
gsql -d postgres -p 5432

# 创建数据库用户
CREATE USER appuser WITH PASSWORD 'Kunpeng@2026';

# 创建数据库并指定所有者
CREATE DATABASE appdb OWNER appuser;

# 授权
GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser;

# 切换到新数据库
\c appdb

# 创建测试表
CREATE TABLE test_kunpeng (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

# 插入测试数据
INSERT INTO test_kunpeng (name) VALUES ('鲲鹏测试数据1'), ('鲲鹏测试数据2');

# 查询验证
SELECT * FROM test_kunpeng;
# 输出:
#  id |      name       |         created_at
# ----+-----------------+----------------------------
#   1 | 鲲鹏测试数据1   | 2026-04-29 17:45:00.123456
#   2 | 鲲鹏测试数据2   | 2026-04-29 17:45:00.234567
# (2 rows)

六、注册为系统服务

将openGauss注册为systemd服务,实现开机自启和统一管理:

# 退出到root用户
exit

# 创建service文件
sudo tee /etc/systemd/system/opengauss.service << 'EOF'
[Unit]
Description=openGauss Database Server
After=network.target

[Service]
Type=forking
User=omm
Group=dbgrp
Environment=GAUSSHOME=/home/omm/openGauss
Environment=LD_LIBRARY_PATH=/home/omm/openGauss/lib
ExecStart=/home/omm/openGauss/bin/gs_ctl start -D /home/omm/data -l /home/omm/data/logfile
ExecStop=/home/omm/openGauss/bin/gs_ctl stop -D /home/omm/data -m fast
ExecReload=/home/omm/openGauss/bin/gs_ctl reload -D /home/omm/data
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

# 加载配置并启用
sudo systemctl daemon-reload
sudo systemctl enable opengauss

# 验证
sudo systemctl status opengauss

七、总结

openGauss在鲲鹏平台上的安装部署并不复杂,核心步骤是:准备系统参数、创建用户、初始化实例、配置远程访问、启动验证。基础调优主要围绕内存分配、连接数和WAL日志三个方向,需要根据服务器配置和业务负载来调整。

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞