资讯动态

GaussDB单机安装避坑指南:openEuler环境配置与验证

发布时间:2026/10/26 10:33:54 来源:尧图企业网站定制
简介本资源为华为 GaussDB 100 分布式数据库 1.0.1 版本的安装部署包面向需要在 EulerOS 20SP8 64 位环境中搭建、验证或学习国产分布式数据库的开发者与运维人员可解决数据库环境准备与初始化部署的问题。压缩包共 6 个文件以 Python 脚本为主体涵盖安装、升级及功能库等用途另附运行包与 sha256 校验文件整体约 7.39MB体积轻量便于快速获取。目前已有 1313 人学习下载具备一定的参考基础。借助包内脚本与校验文件读者可完成数据库的安装配置、版本升级与完整性校验结合 GaussDB 的分布式架构、高可用与强一致性等特性进一步理解其部署流程与运行机制适合作为国产数据库入门实践与实验环境搭建的参考材料。1. 装 GaussDB 前先看清这个包名一次版本对不上的翻车记录第一次拿到GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz这个包我下意识就解压开装结果在依赖检查那一步卡了整整一个下午。包名里藏的信息比想象中多100对应产品大版本线1.0.1是具体小版本EULER20SP8明确要求操作系统是 openEuler 20.03 SP864bit说明只支持 x86_64 架构。少对上一个轻则安装脚本报依赖缺失重则初始化数据库时直接崩在启动阶段日志里全是看不懂的共享库错误。这套环境在国产化替代场景里出现频率很高适合需要在本机或测试机上把 GaussDB 单机版跑起来的开发者尤其是第一次接触 openEuler 生态、对 RPM 依赖和内核参数还没什么概念的人。装不好不是能力问题是版本矩阵没对齐。2. 环境准备openEuler 20.03 SP8 的底子要先打牢2.1 操作系统与硬件的最低门槛这个包对操作系统的要求是硬性的不是「建议」。openEuler 20.03 SP8 的 kernel 版本通常在 4.19 分支glibc 版本和包内二进制编译时链接的版本必须匹配。我一般先确认三件事cat /etc/openEuler-release看是不是 SP8uname -m看是不是 x86_64free -g看内存。单机测试环境建议至少 4 核 8G磁盘留 40G 以上因为安装过程会解压大量文件数据目录默认还要占一块。# 确认系统版本输出里必须带 SP8 cat /etc/openEuler-release # 确认架构必须是 x86_64 uname -m # 看内存和磁盘/opt 所在分区至少留 40G free -g df -h /opt这三条命令的输出要逐条核对。openEuler-release如果显示的是 SP6 或 SP10不要抱侥幸心理往下走后面大概率在ldd检查时翻车。架构不对的话包里的二进制根本跑不起来报的是cannot execute binary file这个错误没有绕过去的办法。2.2 依赖包和内核参数的预配置GaussDB 依赖的 RPM 包不少常见做法是先把libaio、numactl、readline、openssl这几个装上安装脚本自己也会检查但提前装好能省一轮报错。内核参数方面sem、shmmax、shmall这几项如果不调数据库启动时会报共享内存分配失败。# 安装基础依赖缺什么补什么 yum install -y libaio numactl readline openssl-devel bzip2 # 调整共享内存参数写入 sysctl.conf 持久化 echo kernel.shmmax 68719476736 /etc/sysctl.conf echo kernel.shmall 4294967296 /etc/sysctl.conf echo kernel.sem 250 32000 100 128 /etc/sysctl.conf sysctl -pshmmax设成 64G 是给共享内存池留余量shmall是页数按 4K 页算对应 16G 左右sem四个值分别是最小信号量数、最大信号量数、单次操作最大数和系统级最大数。这些值不是拍脑袋是安装文档里给的参考区间我一般直接取上限测试环境不怕给多。改完sysctl -p要看到每项都生效有报错说明某行格式写错了。2.3 用户、目录和权限的规划GaussDB 不允许用 root 直接跑数据库进程必须建独立用户。我习惯用omm这个用户名目录统一放/opt/gaussdb数据目录单独挂一块盘或者单独建子目录方便后面做备份和迁移。# 创建数据库运行用户 useradd -m -d /home/omm -s /bin/bash omm echo omm:YourPassword123 | chpasswd # 建安装目录和数据目录属主给 omm mkdir -p /opt/gaussdb/app /opt/gaussdb/data chown -R omm:omm /opt/gaussdb chmod 750 /opt/gaussdb密码这里只是示例实际环境要换成符合复杂度要求的。目录权限给 750 是常见做法太松了安装脚本会警告太紧了 omm 用户自己写不进去。/opt/gaussdb/app放解压后的程序文件/opt/gaussdb/data放实例数据分开的好处是升级时只动 app 目录数据不受影响。3. 解压与安装从 tar.gz 到实例初始化的完整链路3.1 解压包并检查目录结构拿到 tar.gz 之后先别急着解用tar -tzf看一眼里面有什么确认顶层目录名和预期一致。这个包解压出来通常是一个带版本号的目录里面包含simpleInstall脚本、script目录和一堆 RPM 或二进制文件。# 切到安装目录用 omm 用户操作 su - omm cd /opt/gaussdb/app # 先看包内结构确认顶层目录 tar -tzf /path/to/GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz | head -20 # 正式解压 tar -xzf /path/to/GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz ls -lhead -20那一步是为了避免解压出一堆散文件到当前目录如果顶层没有统一目录我会先建一个子目录再解。解压完ls应该能看到类似GaussDB_100_1.0.1的目录进去之后找simpleInstall或者install.sh不同小版本的入口脚本名可能略有差异以实际解压结果为准。3.2 用 simpleInstall 走单机安装单机场景下simpleInstall是最省事的入口它会引导你填端口、数据目录、初始密码这些关键参数。执行前确保当前用户是 omm且对 app 和 data 目录都有写权限。cd /opt/gaussdb/app/GaussDB_100_1.0.1 # 给脚本执行权限 chmod x simpleInstall # 执行安装按提示填参数 ./simpleInstall交互过程中会问几个关键项安装路径填/opt/gaussdb/app数据路径填/opt/gaussdb/data端口默认 5432 可以改初始密码要满足长度和字符组合要求。我一般把端口改成非默认值避免和本机其他服务冲突。脚本跑完会输出一段启动命令和连接串这段信息要记下来后面验证全靠它。如果中途报错退出先看它打印的日志路径通常在/opt/gaussdb/app/GaussDB_100_1.0.1/log下面。3.3 手动初始化的备选路径有些场景下simpleInstall因为环境差异跑不通比如它内部调用的某个检查脚本对 shell 版本敏感。这时候可以走手动初始化先用gs_initdb建实例再用gs_ctl启动。# 手动初始化数据目录-D 指定数据目录-w 指定初始密码 gs_initdb -D /opt/gaussdb/data -w YourPassword123 --nodenamestandalone # 启动实例 gs_ctl start -D /opt/gaussdb/data # 看状态确认起来了 gs_ctl status -D /opt/gaussdb/datags_initdb的--nodename参数在单机模式下给个固定名字就行集群模式才需要区分。-w是初始密码不设的话后面登录会麻烦。gs_ctl status输出里看到server is running才算成功如果显示no server running去数据目录下的pg_log里翻启动日志常见原因是端口被占或者共享内存参数没生效。4. 参数配置让实例跑得稳的几个关键项4.1 连接与内存相关参数实例起来之后默认参数是给最小资源环境用的测试机上可以适当调大。max_connections默认 100 左右本地开发够用但如果要跑并发测试就得往上加。shared_buffers是共享缓冲区一般给物理内存的 25% 到 40%。-- 连上数据库后执行查看当前关键参数 SHOW max_connections; SHOW shared_buffers; SHOW work_mem; -- 调整参数测试环境示例值 ALTER SYSTEM SET max_connections 200; ALTER SYSTEM SET shared_buffers 2GB; ALTER SYSTEM SET work_mem 16MB;ALTER SYSTEM写的是postgresql.conf或者对应的配置文件改完要重启或者 reload 才生效。shared_buffers给太大在内存小的机器上会适得其反8G 内存的测试机给 2G 比较稳。work_mem是每个排序或哈希操作的内存上限并发高的时候要算总账别只看单会话。4.2 日志与审计的落地配置排查问题时日志是第一手材料默认日志级别偏保守我一般把慢查询和连接日志打开方便后面定位。-- 记录超过 1 秒的慢查询 ALTER SYSTEM SET log_min_duration_statement 1000; -- 记录连接和断开 ALTER SYSTEM SET log_connections on; ALTER SYSTEM SET log_disconnections on; -- 日志目录确认 SHOW log_directory;log_min_duration_statement单位是毫秒1000 就是 1 秒。测试环境可以设更小比如 200先把慢的地方暴露出来。log_directory默认在数据目录下的pg_log确认这个路径有写权限否则日志写不进去你还以为没慢查询。4.3 客户端连接串的写法应用侧连 GaussDB 和连 PostgreSQL 的驱动基本通用连接串格式也接近。本地验证用gsql最直接。# 本地连接-d 指定数据库-U 指定用户-p 指定端口 gsql -d postgres -U omm -p 5432 -h 127.0.0.1 # 连接成功后执行一条验证语句 SELECT version();-h 127.0.0.1走 TCP不写的话走本地 socket两种方式权限配置不一样。如果 TCP 连不上但 socket 能连去查pg_hba.conf里的 host 条目。SELECT version()返回的字符串里能看到 GaussDB 版本号和编译信息这条能出来基本说明实例是健康的。5. 避坑排查装 GaussDB 时最容易翻车的五个点5.1 现象安装脚本报共享库找不到原因通常是系统缺libaio或者numactl的运行时库ldd检查某个二进制时返回not found。解决方式是先用ldd定位缺哪个 so再yum provides找到对应包装上。我遇到过libaio.so.1缺失装完libaio就好了但要注意装的是运行时包不是 devel 包。5.2 现象初始化时提示端口被占用原因可能是本机已经有 PostgreSQL 或者其他服务占了 5432。解决方式是ss -lntp | grep 5432看谁占着要么停掉对方要么在安装时把端口改成 5433 之类。改端口要在初始化之前改初始化之后再改要动配置文件并重启多一道手续。5.3 现象gsql 连接报认证失败原因多半是pg_hba.conf里没有放行对应的连接方式。本地 socket 和 TCP 是两条独立的规则-h 127.0.0.1走的是 host 规则。解决方式是编辑数据目录下的pg_hba.conf加一行host all all 127.0.0.1/32 md5然后gs_ctl reload让配置生效。改完不 reload 等于没改这个坑我踩过不止一次。5.4 现象启动时报共享内存分配失败原因是kernel.shmmax或shmall没生效或者设的值比实例需要的还小。解决方式是sysctl -a | grep shm确认当前值对比/etc/sysctl.conf里的配置不一致说明没sysctl -p或者被其他配置覆盖了。改完重新sysctl -p再gs_ctl start。5.5 现象simpleInstall 跑到一半退出且日志信息很少原因是脚本内部的某个检查项不满足但没把详细原因打到终端。解决方式是去脚本同级的log目录找最近的日志文件通常能看到具体是哪一步的返回值不对。常见的是目录权限、用户不对或者某个环境变量没设。用 omm 用户重新跑一遍别用 root 跑完再切用户权限会乱。6. 装完怎么验证三条命令确认实例真的能用装完不验证等于没装。我习惯用三条命令做收尾检查分别覆盖进程、连接和读写。# 第一条看进程和状态 gs_ctl status -D /opt/gaussdb/data # 第二条连上去执行一条查询 gsql -d postgres -U omm -p 5432 -h 127.0.0.1 -c SELECT 1; # 第三条建表插入再查验证读写链路 gsql -d postgres -U omm -p 5432 -h 127.0.0.1 -c CREATE TABLE t_verify(id int); INSERT INTO t_verify VALUES (1); SELECT * FROM t_verify;第一条输出里要有server is running第二条要返回一行1第三条要能看到插入的值被查出来。三条都过说明实例的启动、认证、存储链路都是通的。任何一条失败按第 5 章的排查顺序往回找先看状态再看日志再看配置。检查项通过标准失败先看哪里进程状态输出 server is running数据目录下 pg_log 启动日志连接认证返回一行结果pg_hba.conf 和端口占用读写链路建表插入查询都成功数据目录磁盘空间和权限还有一个小技巧验证完把SELECT version()的输出存一份到笔记里后面遇到版本相关的问题能直接对照不用再连上去查。我一般还会顺手把gs_ctl status的输出也存一份记录下当时的 PID 和启动时间出问题时对比用。从那以后我每次装完 GaussDB 都强制走一遍这三条验证不管安装脚本最后打印的「安装成功」有多好看。脚本说成功但实例连不上的情况我遇到过两次都是靠第三条读写验证才暴露出来。希望帮到你少走我踩过的那些弯路。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑