记录炬鲸 OBSERVE 在龙芯 3A5000(LoongArch)+ 银河麒麟 V10 + openGauss 下的部署与适配:自研指令集带来的二进制生态问题、openGauss 方言差异、参数调优与踩坑记录。
之前写过鲲鹏 + 麒麟 + 达梦、飞腾 + UOS + 金仓,这次是第三套组合:龙芯 3A5000 处理器、银河麒麟 V10、openGauss 数据库。龙芯最特别的是指令集——LoongArch 是龙芯自研架构,既不是 x86 也不是 ARM,这带来一个现实问题:市面上很多"国产化"二进制只出了 x86 和 aarch64 两个版本,LoongArch 版要么没有、要么滞后。信创选型时,处理器架构决定了后续所有软件的可用性,这个要在立项时就想清楚。
先确认三件事:OS 是 loongarch64 而不是 mips64el(龙芯老架构,别搞混);openGauss 有 LoongArch 官方发行版;OBSERVE 提供 loongarch64 离线安装包。装之前跑 uname -m 确认是 loongarch64。
tar -xzf jjhub-observe-2.6-loongarch64.tar.gz
cd jjhub-observe-2.6-loongarch64
./install.sh --db opengauss --db-host 10.0.0.31 --db-port 5432
openGauss 默认端口 5432(PG 协议)。安装脚本自动建库建用户,建议用独立业务账号,不用超级用户 omm 跑业务连接。openGauss 默认开启资源池和连接数限制,业务账号要单独授权,否则连接数会被默认值卡住。
openGauss 基于 PostgreSQL 9.2 分支自研,大部分 PG 语法兼容,但有差异:
pg_catalog 之外的部分扩展,元数据层要避开这些扩展;LIMIT ... OFFSET,和 PG 一致,但 openGauss 对大数据量 OFFSET 性能差,深分页要改游标或 keyset;postgresql.conf 里调整:
shared_buffers = 4GB
max_connections = 300
synchronous_commit = off
openGauss 默认 WAL 同步刷盘,采集场景写入量大,synchronous_commit = off 能显著降低写入延迟,代价是极端情况丢最后一个事务。日志采集这种"丢几条可容忍"的场景可以开,交易类业务不行。