openEuler 22.03 安装单机版openGauss 6.02失败!

Checking node configuration on all nodes.
Initializing instances on all nodes.
Initializing instance.
[GAUSS-51615] : Failed to initialize instance. Command:/opt/huawei/install/app/bin/gs_initdb --locale=C -D /opt/huawei/install/data/dn --nodename=dn_6001 --locale=en_US.utf8 -C /opt/huawei/install/app/bin. Error:
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 “en_US.utf8”.
The default database encoding has accordingly been set to “UTF8”.
The default text search configuration will be set to “english”.

fixing permissions on existing directory /opt/huawei/install/data/dn … ok
creating subdirectories … in ordinary occasionok
creating configuration files … ok
selecting default max_connections … 10
selecting default shared_buffers … 400kB
Begin init undo subsystem meta.
[INIT UNDO] Init undo subsystem meta successfully.
creating template1 database in /opt/huawei/install/data/dn/base/1 … gs_initdb: removing contents of data directory “/opt/huawei/install/data/dn”
Exception ignored in: <function Pool.del at 0x7f04fe0a3ee0>
Traceback (most recent call last):
File “/usr/lib64/python3.9/multiprocessing/pool.py”, line 268, in del
self._change_notifier.put(None)
File “/usr/lib64/python3.9/multiprocessing/queues.py”, line 378, in put
self._writer.send_bytes(obj)
File “/usr/lib64/python3.9/multiprocessing/connection.py”, line 205, in send_bytes
self._send_bytes(m[offset:offset + size])
File “/usr/lib64/python3.9/multiprocessing/connection.py”, line 416, in _send_bytes
self._send(header + buf)
File “/usr/lib64/python3.9/multiprocessing/connection.py”, line 373, in _send
n = write(self._handle, buf)
OSError: [Errno 9] Bad file descriptor

[omm@node1hostname script]$

答案内容由AI生成,仅供参考:

总结

原因 可能性 解决方式
缺少 LSE 指令集支持 :star::star::star::star::star: (极高) 改用 openGauss 5.0.3 或 7.0.0-RC1 (noLSE)
缺少依赖软件 :star::star::star: (高) 安装 libedit, numactl 等依赖
openEuler SP 版本不兼容 :star::star: (中) 考虑使用 SP1/SP2/SP3 或等待新版
资源限制(ulimit) :star: (低) 通过 /etc/security/limits.conf 调整

强烈建议优先排查 CPU 指令集兼容性问题。 如果您的环境基于飞腾等 ARM CPU,那么 openGauss 6.0.2 的安装失败是可预见的,应选择官方推荐的替代版本。

点击此处查看详细分析解答

openEuler 22.03 安装单机版 openGauss 6.0.2 失败的分析与解决建议

根据您提供的错误信息,您在 openEuler 22.03 上安装 openGauss 6.0.2 单机版时,初始化实例阶段失败,抛出错误代码 [GAUSS-51615]。错误发生在执行 gs_initdb 命令时,虽然数据库初始化过程看似启动,但在创建 template1 数据库时失败,导致数据目录被清空(gs_initdb: removing contents of data directory "/opt/huawei/install/data/dn"),最终安装中断。


错误分析

从错误日志可以看出:

  • gs_initdb 命令已开始执行,权限正确(会由 omm 用户拥有),区域设置(en_US.utf8)也已配置。
  • 初始化过程执行了创建目录、配置文件、模板数据库等步骤。
  • 核心问题出现在 template1 数据库的创建环节。
  • 日志中还出现一个 Python 多进程异常
    OSError: [Errno 9] Bad file descriptor
    
    这是一个底层 I/O 错误,通常与进程间通信(IPC)的管道(pipe)失效有关,意味着 gs_initdb 在利用多进程进行初始化时,某个工作进程崩溃或通信失败。

根本原因(基于上下文)

尽管 GAUSS-51615 错误可能有多种原因,但结合您提供的 完整的上下文信息(Knowledge Graph 和 Document Chunks),可以总结出该问题的主要潜在原因

1. CPU 架构与指令集不兼容(最可能)

根据您系统可能是 ARM(如飞腾)架构 的情况,这是导致安装失败的最核心原因

  • openGauss 6.0.2 默认编译版本依赖 ARMv8.1 中的 LSE (Large System Extensions) 指令集
  • 飞腾 2000 等早期国产 ARM CPU 不支持 LSE 指令
  • gaussdb 核心进程在执行时遇到无法识别的 LSE 指令,会导致程序崩溃,从而引发 gs_initdb 在多进程初始化阶段通信管道断裂(Bad file descriptor)。

证据支持:

  • 文档 Document Chunksreference_id: 5 明确指出:“飞腾2000等ARM处理器安装opengauss报错的解决方法 - 原因:部分CPU不支持LSE”。
  • reference_id: 4 的错误信息 [GAUSS-51615] 与您的问题完全一致,其回答明确指出:“你用的应该是飞腾机器,缺少LSE指令集”。
  • openGauss.org 官方也确认从 7.0.0-RC2 版本起,才提供了 不依赖 LSE 的专用安装包noLSE 版本),而 6.0.3 版本尚在提供计划中。

2. 操作系统补丁级别 (SP) 问题

另一个潜在原因是 openEuler 的版本细微差异

  • 有明确的 KG 关系指出:openGauss 6.0.2 build 6285c0efopenEuler 22.03 LTS SP4无法正常运行,报告“系统或 CPU 限制”。
  • openEuler 22.03 有多个服务包(SP1, SP2, SP3, SP4),不同 SP 的内核、glibc 或系统库可能存在细微差异。
  • 如果您的系统是较新的 SP4,而 openGauss 6.0.2 是为早期 SP 构建的,也可能导致兼容性问题。

3. 缺少依赖软件包

在 ARM 系统或最小化安装的系统中,可能缺少 gs_initdbgaussdb 所需的库。

常见缺失依赖(相关日志 [GAUSS-51405]):

  • libedit
  • libxml2
  • lz4
  • numactl
  • unixODBC
  • java

证据支持:

  • Document Chunks reference_id: 5 中的用户 shanwangliu 因此报错 GAUSS-51405

解决方案与建议

根据上述分析,推荐按以下步骤排查和解决:

:white_check_mark: 方案一:确认 CPU 架构并获取正确的安装包(首要步骤)

  1. 运行命令确认架构

    lscpu
    uname -a
    

    如果输出包含 aarch64ARM 或 CPU 型号为 飞腾(Phytium),则可确定是 ARM 架构。

  2. 检查 LSE 支持
    在 CPU 信息中,查找指令集(Flags)是否包含 lse。如果不包含,则不支持 LSE。

  3. 解决方案

    • 不幸的是:从社区反馈来看,6.0.2 版本没有官方发布的 noLSE 专用包
    • 建议
      • 暂不使用 6.0.2,改用已验证兼容的版本。
      • 考虑 降级openGauss 5.0.3,有文档(KG)证明 openGauss 5.0.3 可在 D2000 + openEuler 20.03 环境下成功安装(这表明其对 LSE 无依赖)。
      • 升级openGauss 7.0.0-RC1 (noLSE 版本),该版本明确提供不依赖 LSE 的包,适用于飞腾等 CPU。

:white_check_mark: 方案二:检查并安装所有依赖软件

确保所有必需依赖已安装:

# 使用 root 或 sudo 执行
yum install -y libedit libxml2 lz4 numactl unixODBC java

:white_check_mark: 方案三:检查 openEuler SP 版本

cat /etc/os-release

如果结果显示是 SP4,尝试寻找 SP3 或更早版本进行对比测试,或等待官方发布兼容 SP4 的包。

:white_check_mark: 方案四:检查 ulimit 和安全限制

错误日志中出现的 OSError: Bad file descriptor 有时也与系统资源限制有关。

  • 检查并调整文件句柄限制
    # 临时提升
    ulimit -n 65535
    
  • 永久设置
    root 编辑 /etc/security/limits.conf,添加:
    omm soft nofile 65535
    omm hard nofile 65535
    
    然后重新以 omm 用户登录。

总结

原因 可能性 解决方式
缺少 LSE 指令集支持 :star::star::star::star::star: (极高) 改用 openGauss 5.0.3 或 7.0.0-RC1 (noLSE)
缺少依赖软件 :star::star::star: (高) 安装 libedit, numactl 等依赖
openEuler SP 版本不兼容 :star::star: (中) 考虑使用 SP1/SP2/SP3 或等待新版
资源限制(ulimit) :star: (低) 通过 /etc/security/limits.conf 调整

强烈建议优先排查 CPU 指令集兼容性问题。 如果您的环境基于飞腾等 ARM CPU,那么 openGauss 6.0.2 的安装失败是可预见的,应选择官方推荐的替代版本。

排查一下安装时内存,磁盘,文件系统,权限方面是否满足要求。

网上说是cpu不支持

你是什么型号的CPU,可以看下有没有LSE指令集

就是没有ss4指令

可以 lscpu 结果发下吗? 没见过ss4不支持的情况。

对于x86的主要有 rdtscp 和 avx2

对于arm的是LSE(armv8.1及以上支持)

是我的cpu老了