三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

从零到一:手把手部署openGauss极简版并完成基础运维

从零到一:手把手部署openGauss极简版并完成基础运维

1. 环境准备:从零搭建openGauss的基石

第一次接触openGauss时,我被它"极简版"的宣传吸引,但真正动手部署才发现,前期环境准备才是决定成败的关键。就像盖房子需要打地基,数据库安装前的系统配置直接影响后续所有操作。这里我把自己踩过的坑和验证过的方案完整分享给你。

1.1 用户与权限的精细化管理

很多教程会直接让你用root操作,但在生产环境这是大忌。我建议像这样创建专属用户组和用户:

groupadd dbgroup useradd -g dbgroup smis -m -s /bin/bash passwd smis

这里的-m参数会自动创建用户目录,-s指定登录shell。比原始方案更安全的是,我建议密码长度至少12位,包含大小写字母、数字和特殊字符,比如Smis@OpenGauss2023

创建安装目录时要注意父子目录权限分离:

mkdir -p /opt/software/openGauss chown -R smis:dbgroup /opt/software/openGauss chmod 750 /opt/software # 父目录限制执行权限 chmod 770 /opt/software/openGauss

这种权限设计既保证安全性,又避免后续安装时出现"Permission denied"错误。

1.2 系统安全模块的取舍艺术

关闭防火墙和SELinux是大多数教程的标准操作,但为什么要这样做?其实是因为数据库需要监听网络端口和访问特定资源,而默认安全策略会阻止这些行为。不过完全关闭安全防护并不明智,我这里有个折中方案:

对于防火墙,可以只开放必要端口:

firewall-cmd --add-port=5432/tcp --permanent firewall-cmd --reload

SELinux则可以切换为宽容模式:

setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

这样既满足安装需求,又保留基本安全防护。实测在CentOS 8上,这种配置能让openGauss正常运行,同时系统审计日志依然有效。

1.3 内存与交换空间的优化配置

关闭交换内存(swap)确实能提升数据库性能,但服务器内存不足时可能引发OOM。我的经验是保留swap但限制使用比例:

echo "vm.swappiness = 10" >> /etc/sysctl.conf sysctl -p

这个值表示物理内存使用超过90%时才使用swap,在性能和稳定性间取得平衡。

内核参数调整还有个隐藏重点:

echo "kernel.sem=250 85000 250 330" >> /etc/sysctl.conf sysctl -p

这个配置关系到PostgreSQL系数据库的信号量设置,不调整可能导致"SEMMNI is not correct"错误。我曾遇到某台32核服务器必须设置为500 256000 500 1024才能稳定运行,具体数值要根据CPU核心数调整。

2. 安装实战:极简版不简单的细节

下载安装包时有个易错点:官网同时提供极简版和企业版,新手容易下错。建议通过MD5校验文件完整性:

md5sum openGauss-3.1.0-CentOS-64bit.tar.bz2

对比官网公布的校验值,避免因网络传输导致安装包损坏。

2.1 解压与目录结构的奥秘

解压时使用-p参数保留文件属性很重要:

tar -jxf openGauss-3.1.0-CentOS-64bit.tar.bz2 -C /opt/software/openGauss --no-same-owner

特别注意最后的--no-same-owner参数,可以避免因tar包内文件属主与当前系统不匹配导致的权限问题。

安装脚本install.sh有个隐藏功能:通过-p参数可以指定端口号。如果默认5432端口被占用,可以这样指定新端口:

sh install.sh -w "Complex@Password123" -p 5433

2.2 依赖库问题的终极解决方案

最常见的安装错误是缺少libreadline.so.7,其实有更优雅的解决方式:

dnf install compat-readline7 -y

比手动创建软链接更规范,还能通过包管理器跟踪依赖。如果遇到其他类似错误,可以尝试:

yum provides */libmissing_lib.so # 查找包含缺失库的软件包

3. 运维入门:从安装成功到稳定运行

看到"complete successfully"提示只是开始。我习惯用这套组合拳验证安装结果:

# 检查进程 ps aux | grep gaussdb | grep -v grep # 验证端口监听 netstat -tulnp | grep 5432 # 测试本地连接 gsql -d postgres -p 5432 -c "SELECT version();"

3.1 服务管理的正确姿势

官方文档说的gs_ctl确实能用,但在systemd时代可以更优雅:

cat > /etc/systemd/system/opengauss.service <<EOF [Unit] Description=openGauss Database Server After=network.target [Service] Type=forking User=smis Group=dbgroup Environment=GAUSSHOME=/opt/software/openGauss Environment=PATH=/opt/software/openGauss/bin:$PATH ExecStart=/opt/software/openGauss/bin/gs_ctl start -D /opt/software/openGauss/data/single_node -Z single_node ExecStop=/opt/software/openGauss/bin/gs_ctl stop -D /opt/software/openGauss/data/single_node -Z single_node Restart=on-failure [Install] WantedBy=multi-user.target EOF

这样就能用systemctl start opengauss管理服务了,还能实现开机自启和异常重启。

3.2 环境变量配置的学问

很多新手会直接在.bashrc里写死路径,我推荐更灵活的方式:

echo 'export GAUSSHOME=/opt/software/openGauss' > /etc/profile.d/opengauss.sh echo 'export PATH=$GAUSSHOME/bin:$PATH' >> /etc/profile.d/opengauss.sh echo 'export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH' >> /etc/profile.d/opengauss.sh chmod +x /etc/profile.d/opengauss.sh

这种系统级配置对所有用户生效,避免切换用户时找不到命令的问题。

4. 连接与权限:安全访问的黄金法则

首次连接建议创建业务专属用户,而不是直接用默认用户:

CREATE USER app_user WITH PASSWORD 'Str0ngP@ss' NOSUPERUSER; CREATE DATABASE app_db OWNER app_user; GRANT CONNECT ON DATABASE app_db TO app_user;

4.1 远程连接的安全配置

修改pg_hba.conf时,不建议直接用0.0.0.0/0开放所有IP。更安全的做法是:

echo "host app_db app_user 192.168.1.0/24 md5" >> /opt/software/openGauss/data/single_node/pg_hba.conf

只允许特定网段访问特定数据库。修改配置后不需要重启,执行以下命令重载即可:

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

4.2 图形化工具连接技巧

用Navicat连接时如果报"认证方式错误",除了改password_encryption_type,还要注意:

  1. 在连接字符串后加上?application_name=navicat
  2. 高级选项中设置"保持连接间隔"为30秒
  3. SSL选项选择"prefer"而不是"require"
← 返回列表