
1. 环境检查与安装前置准备1.1 先搞清楚你的麒麟V10是哪个版本、什么架构麒麟V10这个名字圈子里一般默认叫“麒麟V10”但实际用起来差异挺大。你要是拿桌面版的操作流程去套服务器版或者拿ARM的安装包装到x86机器上大概率第一步就要翻车。所以动手之前先把下面三条命令跑一遍确认清楚三件事系统版本、内核架构、包管理方式。cat /etc/kylin-release cat /etc/os-release uname -m/etc/kylin-release会显示具体版本号比如Kylin Linux Advanced Server release V10 SP3这里的SP1、SP2、SP3差异主要在内核版本和软件仓库openGauss安装时只要内核不低于官方要求的版本一般问题不大。uname -m输出x86_64表示Intel/AMD平台aarch64表示鲲鹏、飞腾等ARM平台。这一步决定了你下载哪个安装包千万不能搞错。顺便用cat /proc/version看看内核版本openGauss 6.0.0 官方建议在 openEuler 20.03 LTS 以上内核跑麒麟V10 SP1以上基本都是基于openEuler内核的实测兼容性没问题。我这次实操用的环境就是一台麒麟V10 SP3服务器版x86_64架构8核16G内存系统盘120G额外挂了一块200G数据盘。这个配置跑单机openGauss做生产测试绰绰有余。1.2 硬件资源评估与初始参数规划openGauss 6.0.0单机部署对硬件的最低要求不高2核4G都能装起来但“能装”和“能稳定跑业务”是两回事。结合我自己的经验给你一个参考基线资源项最低配置推荐配置说明CPU2核8核及以上openGauss对多核利用不错核心数多并行处理能力强内存4GB16GB及以上编译安装、初始化、并发查询都吃内存磁盘20GB100GB以上安装目录 数据目录要分开规划swap2GB4GB内存不足时的兜底有比没有强内存规划上有个细节很多人会忽略openGauss用的是共享内存机制默认数据库启动后会占用一部分内存做缓存。如果你机器内存不大比如只有8G不要硬把shared_buffers调到4G建议内存的25%左右起步128MB兜底。我测试机上给的是2G的shared_buffers后续跑并发压测也没出现OOM问题。磁盘方面数据目录务必独立分区别跟系统盘混在一起不然日志一膨胀系统盘满了我只能恭喜你喜提一次“服务异常”事故。1.3 安装包下载与校验openGauss 6.0.0的安装包从官网下载下载页会列出不同架构的包常见的是这两类openGauss-6.0.0-openEuler-x86_64.tar.bz2x86平台openGauss-6.0.0-openEuler-aarch64.tar.bz2ARM平台注意看名称里的openEuler字样麒麟V10内核兼容openEuler选这个系列没问题。很多人看到官网还有CentOS版本这里不建议在麒麟上装CentOS系包依赖库版本差异会导致各种莫名其妙的报错。下载完一定要做校验防止文件不完整md5sum openGauss-6.0.0-openEuler-x86_64.tar.bz2跟官网页面的MD5值对比一致再继续。这一步不是走过场——安装包损坏的情况我至少见过三次解压时有的报错有的不报错等执行预安装时才抛异常排查了半天最后发现是包不完整非常浪费时间。提示安装包大小通常在100MB左右如果你下载的文件只有几十MB基本可以判定下载中断了重新下载比硬着头皮装省心得多。2. 系统环境配置与依赖安装2.1 关闭防火墙与SELinux这一步在很多教程里就是两条命令带过但我还是想多说两句原因。openGauss的集群管理进程需要通过SSH在节点间通信如果防火墙开着预安装阶段就会卡在互信配置上SELinux开启时数据库进程尝试访问特殊文件权限会被拦截报错还很隐晦直接提示权限不足容易让人误判成用户或目录权限问题。先关SELinuxsetenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config再停防火墙systemctl stop firewalld systemctl disable firewalldsetenforce 0是临时生效sed改配置文件是永久生效重启后依然保持disabled。防火墙用disable防止机器重启后又自己拉起来。如果你是图形界面版的麒麟桌面右上角的防火墙设置也顺手关掉命令行改了桌面端可能还会提示你已经启用容易混淆。提示如果公司安全基线要求不能关防火墙那就把数据库端口和节点互联地址加白名单但单机安装场景我建议还是先关掉装完再按合规要求精确放行。2.2 配置本地Yum源并安装依赖包麒麟V10服务器版如果License正常默认可以用官方的yum源。但很多内网环境压根连不上外网这时候就要靠本地源或离线包了。先试一下能不能正常解析yum makecache如果报错或者超时则需要挂载麒麟安装ISO作为本地源。把ISO上传到服务器比如放在/opt/kylin_iso下mount -o loop /opt/Kylin-Server-10-SP3-x86_64.iso /mnt然后配置repo文件cat /etc/yum.repos.d/kylin-local.repo EOF [kylin-local] nameKylin Local Repo baseurlfile:///mnt enabled1 gpgcheck0 EOF这里gpgcheck0是因为本地ISO往往没有对应的公钥不关掉会验证失败装不上。配置完再执行yum clean all yum makecache验证源可用。openGauss 6.0.0预安装脚本会自动检查依赖但为了少踩坑建议手动装齐下面这些yum install -y libaio libaio-devel flex bison ncurses-devel glibc-devel readline-devel python3 python3-devel gcc gcc-c这些包的作用大致说下libaio-devel是异步IO库数据库要用flex、bison是编译工具虽然6.0.0预编译包不涉及源码编译但预安装脚本的依赖检测会检查readline-devel影响后续gsql交互体验没装的话命令行编辑功能异常。一天下来你会发现缺依赖报错是最“低端”的卡点但也是最常见的提前装齐能省下大量排查时间。2.3 内核参数与资源限制调整openGauss对内核参数有硬性要求预安装脚本会检查/etc/sysctl.conf里的kernel.sem、kernel.shmall、kernel.shmmax、fs.file-max、net.core.rmem_default等几个关键值。我直接把推荐配置贴出来并说明计算逻辑。cat /etc/sysctl.conf EOF kernel.sem 250 32000 100 128 kernel.shmall 4194304 kernel.shmmax 17179869184 fs.file-max 6815744 net.core.rmem_default 262144 net.core.wmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_max 4194304 net.ipv4.tcp_rmem 4096 87380 4194304 net.ipv4.tcp_wmem 4096 65536 4194304 EOF sysctl -pkernel.shmmax表示单个共享内存段的最大字节数我有16G内存设成17179869184约16G这样数据库可以把几乎整个内存都映射为共享内存段。kernel.shmall是共享内存页的总数一页按4KB算4194304页就是16G左右。这个参数不是拍脑袋写的计算方式是期望内存大小 / 4KB 页数。如果你机器内存是32G就把这两个值翻倍思路是一样的。然后是资源限制修改/etc/security/limits.conf在文件末尾追加cat /etc/security/limits.conf EOF omm soft core unlimited omm hard core unlimited omm soft nproc 131072 omm hard nproc 131072 omm soft nofile 1000000 omm hard nofile 1000000 EOFnofile是文件句柄数数据库高并发下连接数和文件句柄消耗非常快默认的1024肯定不够实测跑上千连接时会直接报“Too many open files”。core unlimited是为了数据库崩溃时能生成core文件方便之后定位问题生产库上建议保留。3. openGauss 6.0.0 单机安装全流程3.1 创建运行用户与目录规划openGauss不允许用root用户启动数据库这是出于安全考虑——数据库一旦被攻破攻击者拿到的是数据库用户的权限而不是系统最高权限。所以安装前必须创建专用用户和用户组。groupadd dbgrp useradd -g dbgrp -d /home/omm -s /bin/bash omm用户名叫omm是openGauss官方文档示例和绝大多数生产环境的通用做法你也可以叫别的名字但后面所有命令要对应调整没必要给自己找麻烦直接按官方惯例来最稳妥。目录规划上我建议按照下面的结构来mkdir -p /opt/software mkdir -p /opt/openGauss/app mkdir -p /data/data1 mkdir -p /var/log/omm mkdir -p /opt/openGauss/tmp mkdir -p /opt/openGauss/tool mkdir -p /opt/openGauss/corefile把解压包放/opt/software安装目录软件二进制放/opt/openGauss/app数据目录放独立的数据盘/data/data1。这样做的核心考虑是隔离系统盘坏了重装系统数据盘独立挂着数据库文件不会跟着丢/var/log/omm放运行日志避免日志把数据盘塞满。授权给omm用户chown -R omm:dbgrp /opt/software chown -R omm:dbgrp /opt/openGauss chown -R omm:dbgrp /data chown -R omm:dbgrp /var/log/omm这一步不能省owner不对后面预安装脚本会直接报权限错误。3.2 解压安装包并编写cluster_config.xml先把安装包解压到规划目录cd /opt/software tar -xjf openGauss-6.0.0-openEuler-x86_64.tar.bz2解压后会出现一个以版本号命名的目录里面包含script、simpleInstall等子目录。script目录下是安装和卸载脚本安装的核心命令gs_preinstall、gs_install都在这里面。openGauss安装必须提供一个cluster_config.xml配置文件单机也一样。这个文件告诉安装脚本集群叫什么名、节点有哪些IP、软件装哪里、数据放哪里、端口是多少。我用的模板如下?xml version1.0 encodingUTF-8? ROOT CLUSTER PARAM nameclusterName valueogSingle / PARAM namenodeNames valuekylin-node / PARAM namebackIp1s value192.168.56.101 / PARAM namegaussdbAppPath value/opt/openGauss/app / PARAM namegaussdbLogPath value/var/log/omm / PARAM nametmpMppdbPath value/opt/openGauss/tmp / PARAM namegaussdbToolPath value/opt/openGauss/tool / PARAM namecorePath value/opt/openGauss/corefile / PARAM nameclusterType valuesingle-inst / /CLUSTER DEVICELIST DEVICE sn1001 PARAM namename valuekylin-node / PARAM nameazName valueAZ1 / PARAM nameazPriority value1 / PARAM namebackIp1 value192.168.56.101 / PARAM namesshIp1 value192.168.56.101 / PARAM namedataNum value1 / PARAM namedataPortBase value5432 / PARAM namedataNode1 value/data/data1 / PARAM namedataNode1_sock value/data/data1 / PARAM namelistenIp1 value0.0.0.0,192.168.56.101 / /DEVICE /DEVICELIST /ROOT这里解释几个关键点。nodeNames里的kylin-node必须和主机的hostname完全一致可以用hostname命令查看不一致会报错。backIp1s和sshIp1填本机IPdataPortBase是数据库端口默认5432。dataNode1就是你规划的数据目录。clusterType填single-inst表示单机部署。把配置文件放到/opt/software下再改个owned权限cp /opt/software/openGauss-6.0.0-openEuler-x86_64/script/cluster_config.xml /opt/software/ chown omm:dbgrp /opt/software/cluster_config.xml3.3 执行gs_preinstall预安装预安装阶段做的事情很多检查系统参数、安装依赖、配置SSH互信、设置环境变量。这一步骤需要root用户执行命令如下cd /opt/software/openGauss-6.0.0-openEuler-x86_64/script python3 gs_preinstall -U omm -G dbgrp -X /opt/software/cluster_config.xml-U指定运行数据库的用户-G指定用户组-X指定配置文件。执行过程中会输出大量日志正常情况下最后会看到Successfully finished preinstall。这一阶段耗时大概3到5分钟主要花在依赖检查和SSH互信配置上。如果中间报错不用急着回头找原因先看日志文件/opt/software/openGauss-6.0.0-openEuler-x86_64/script/gs_preinstall.log。我遇到最多的一类错误是缺包日志里会明确写Missing dependency: xxx根据提示补装再重新执行即可。预安装脚本是幂等的重复执行不会出问题。还有个容易忽略的点预安装脚本会修改omm用户的.bashrc注入LD_LIBRARY_PATH、PATH等环境变量。如果你中途手动改过这个文件可能影响后续步骤建议执行完预安装后用omm用户登录跑一下source ~/.bashrc让环境变量在当前shell生效。3.4 执行gs_install完成数据库初始化预安装做完后切换到omm用户执行正式安装su - omm cd /opt/software/openGauss-6.0.0-openEuler-x86_64/script python3 gs_install -X /opt/software/cluster_config.xml --gsinit-parameter--localeen_US.UTF-8--gsinit-parameter--localeen_US.UTF-8指定数据库字符集为UTF-8。如果后续想支持中文可以不用加这个参数默认跟系统语言走。开发测试环境建议统一用UTF-8避免中文乱码问题。执行过程中会提示设置数据库初始密码密码要求至少8位必须包含大写、小写、数字和特殊字符中的三类以上。这里输入的密码要记好一会儿gsql登录要用。正确执行完成后会输出类似这样的内容[complete] Installation successfully finished.紧接着可以验证进程和数据目录ps -ef | grep gaussdb gs_ctl status -D /data/data1能看见gaussdb进程在跑说明数据库已经起来了。单机安装整个流程走下来顺利的话20分钟左右就能搞定。4. 数据库基础配置与连接验证4.1 修改初始密码与安全配置数据库初始密码是安装时自己设置的但安装脚本生成的密码策略可能跟业务侧要求不一致比如有些单位要求90天强制改密有些要求密码中不能包含用户名的子串。登录数据库后第一件事就是统一密码策略su - omm gsql -d postgres -p 5432 -rgsql是openGauss自带的命令行客户端-d指定数据库名默认安装后有postgres和template0、template1这几个库。登录后执行ALTER SYSTEM SET password_policy 0; ALTER SYSTEM SET password_min_length 8;password_policy 0表示不启用密码复杂度检查如果你公司安全基线要求复杂密码保持默认即可不要改。改完配置文件后需要重启数据库进程才生效gs_ctl restart -D /data/data1重启完再用新策略设置密码ALTER USER omm IDENTIFIED BY NewPassw0rd!;openGauss的逻辑和Oracle有点像用户密码不要用纯数字或纯字母容易被爆。设置完用\q退出重新用新密码登录一次确认没问题再继续。4.2 配置远程连接访问单机装完默认只允许本机通过socket连接想从别的机器用Navicat、DataGrip连接需要改两处配置。第一处是监听地址修改数据目录下的postgresql.confvi /data/data1/postgresql.conf找到listen_addresses默认是localhost改成listen_addresses **表示监听所有网卡如果你只希望内网特定IP访问也可以写成具体的IP列表比如192.168.56.101。第二处是客户端认证配置修改同目录下的pg_hba.conf在文件末尾追加host all all 0.0.0.0/0 sha256这一行的意思是允许所有IP通过TCP方式访问所有数据库认证方式为sha256。要注意openGauss默认认证方式是sha256别照搬PostgreSQL的md5方式否则连接时报“认证方式不支持”的错误。如果只想放行某个网段把0.0.0.0/0换成192.168.56.0/24即可。改完重启数据库gs_ctl restart -D /data/data1然后用另一台机器测试连接psql -h 192.168.56.101 -p 5432 -U omm -d postgres -W这里如果用psql连不上检查一下本机有没有装openGauss的客户端工具没有的话直接用gsql也可以只是需要指定主机名参数。4.3 日常启停与状态查看命令数据库装完只是开始日常运维命令你得顺手记下来我整理成一张速查表建议截图存着操作命令启动数据库gs_ctl start -D /data/data1停止数据库gs_ctl stop -D /data/data1重启数据库gs_ctl restart -D /data/data1查看状态gs_ctl status -D /data/data1查看进程ps -ef | grep gaussdb查看监听端口netstat -anp | grep 5432命令行登录gsql -d postgres -p 5432 -r查看日志tail -f /var/log/omm/omm/omm-2025-xx-xx_xxxxxx.log日志路径需要根据实际生成的文件名调整/var/log/omm下按用户和日期归类找不到就ls看一下最新目录。注意gs_ctl在执行前需要确保环境变量已加载用su - omm登录后执行su omm不加载环境变量容易报command not found。5. 常见问题排查速查表与避坑实录5.1 安装阶段的典型报错报错1Missing dependency: libaio-devel这个最常见尤其在内网环境。解决方法就是安装依赖包前面2.2节列的那一串全装一遍。如果yum源配好了还报缺包先执行yum clean all yum makecache再重新安装。报错2[GAUSS-51400]: Failed to execute the command: source ~/.bashrc这个报错看着吓人实际多半是配置文件里hostname和实际不一致。检查/etc/hostname里的名字和cluster_config.xml的nodeNames是否完全一致连大小写都要对齐。另外确认/etc/hosts里有本机IP和主机名的映射。报错3预安装时卡在SSH互信配置预安装脚本会生成SSH密钥并在节点间分发单机也有这个环节。如果执行时提示输入密码或卡住不动大概率是omm用户没有SSH登录权限或者root的SSH配置有问题。手动执行一下ssh kylin-node能免密登录成功再跑预安装。如果系统限制root远程登录预安装脚本可能需要加参数跳过SSH检测但更稳妥的办法是把/etc/ssh/sshd_config里的PermitRootLogin临时改为yes装完再改回来。5.2 启动与连接阶段的疑难杂症问题1数据库进程起来了但gsql连接报权限错误一般先看pg_hba.conf确认host行的顺序。openGauss的pg_hba.conf是从上往下匹配的前面的规则优先命中。如果你在文件前面写了host all all 127.0.0.1/32 trust后面才写远端防问规则本地连接确实没问题但远程连接有可能被更靠前的规则拦截。最好的做法是把自己加的那行放在文件末尾。问题2远程连接超时但本机gsql正常先检查防火墙。我见过有人关了firewalld但忘了清iptables规则麒麟V10有些版本同时存在两套防火墙。执行iptables -L如果有规则临时清掉iptables -F再测一次。如果恢复了说明双重防火墙的锅建议把iptables的规则保存文件也清掉避免重启后规则重新加载。问题3数据库初始化时报Permission denied大概率是目录属主不对。检查/data/data1、/opt/openGauss/app是不是omm:dbgrp用ls -l确认。还有一种可能是SELinux没关干净即使执行了setenforce 0如果配置文件没改重启后又会重新开启。5.3 几个文档里不写但很实用的经验经验1安装前先改hostname而不是装完再改openGauss初始化时会把hostname写进配置文件和数据字典如果装完再改机器名虽然数据库能启动但部分管理命令会报警告查看状态时显示的节点名跟实际对不上。最好是安装前就规划好主机名hostnamectl set-hostname kylin-node改完重新登录shell生效。经验2数据目录挂载盘要提前格式化好如果数据盘是全新未分区的安装前先用fdisk分区并格式化为ext4或xfs挂载到/data再创建数据目录。别在没挂载的路径上直接mkdir否则数据会写到系统盘后面再想迁移就要折腾一整天。检查挂载情况df -h /data经验3安装完成后立即做一次全量备份配置openGauss 6.0.0自带的备份工具是gs_backup在初始化完成后跑一次gs_backup -t backup -D /data/data1 -b /opt/openGauss/backup虽然这时数据库里还没有业务数据但配置文件和初始数据都会被备份。之后万一配置改坏了可以快速还原到可用状态。我在测试环境就遇到过改listen_addresses时手滑写错IP导致整个库起不来的情况这时候有备份心里就不慌。经验4日志位置要心里有数openGauss的日志分为运行日志、操作日志和WAL日志。WAL日志默认在数据目录的pg_xlog下会持续增长。单机环境如果磁盘小要定期清理或备份后删除。运行日志在/var/log/omm下排错时优先看这里比看终端输出的报错信息完整得多。5.4 关于安装包版本的一点提醒openGauss 6.0.0相对旧版本有一些变化最直观的是安装包命名和依赖检查更严格了。如果你之前装过5.x版本注意以下几点差异6.0.0对Python版本有要求系统自带的Python3版本过旧会直接拒绝执行安装脚本麒麟V10 SP3自带的Python 3.7勉强够用如果系统是SP1且Python版本较低建议先升级Python3再安装。安装目录必须为空目录如果/opt/openGauss/app下残留了旧版本的二进制文件预安装脚本会报目录非空清空即可。卸载重装时除了删除数据目录还要清理/var/log/omm和/opt/openGauss/tmp否则新实例可能读到旧的socket文件导致端口冲突。这些细节官方文档不一定写全但实际操作中都是实打实的坑。写在最后的一点个人体会这套环境我从头到尾装过不下十遍从最早的openGauss 3.x一路用到6.0.0最大的感受就是安装流程本身并不复杂真正决定成败的是安装前的环境准备。麒麟V10的系统环境跟CentOS、Ubuntu有差异但整体思路是通用的——先确认架构版本再配源装依赖然后调整内核参数最后才轮到真正解压安装。每一步都花几分钟确认清楚后面就能一路顺畅。最后再分享一个我踩过很多次的小技巧安装前给root和omm用户都配好alias把gs_ctl的完整路径写进.bashrc比如alias gs_ctl/opt/openGauss/app/bin/gs_ctl。因为openGauss的bin目录不会自动加到root的PATH里每次手动输全路径太反人类了。配好之后日常启停、查状态都非常顺手。数据库这东西装完只是长征第一步后续的参数调优、备份恢复、监控告警才是大头如果你后面在openGauss使用上遇到什么奇怪问题欢迎一起交流毕竟单机版跑顺了后面再上主备、集群心里才有底。