实战 | GBase 8s 端口配置与远程访问排障全流程

一、背景与需求

作为数据库运维人员,日常工作中经常需要确认数据库端口监听状态、调整端口访问范围。本次实操围绕 GBase 8s 展开,核心需求有两个:

  1. 定位 oninit 进程占用的端口号;
  2. 将默认仅本地监听的 9091 端口开放给远程 IP 访问。

操作环境:Ubuntu Server,GBase 8s 以 gbasedbt 用户运行,初始监听地址为 127.0.1.1:9091

二、问题排查与端口定位

2.1 确认 GBase 8s 进程状态

首先通过 ps 命令确认 oninit 进程(GBase 8s 核心进程)是否正常运行:

bash 复制代码
root@lihe-Virtual-Machine:/etc# ps -ef | grep gbase
gbasedbt   60803       1  0 16:31 ?        00:00:00 oninit
root       66439   18363  0 16:47 pts/0    00:00:00 grep --color=auto gbase

输出显示 oninit 进程 PID 为 60803,状态正常。

2.2 定位进程占用的端口

使用 ss 命令查询 60803 进程对应的端口监听信息:

bash 复制代码
root@lihe-Virtual-Machine:/etc# sudo ss -tulnp | grep 9091
tcp   LISTEN 0      512        127.0.1.1:9091       0.0.0.0:*    users:(("oninit",pid=60846,fd=5),("oninit",pid=60803,fd=4))

关键结论:

  • oninit 进程占用 9091 端口;
  • 监听地址为 127.0.1.1,仅本地可访问;
  • 存在两个 oninit 进程实例(主进程+子进程),属于正常现象。

2.3 确认端口与服务名的映射关系

由于 lsof 输出中端口号被解析为服务名,可通过 /etc/servicessqlhosts 配置文件确认映射:

bash 复制代码
# 查看 sqlhosts 初始配置
root@lihe-Virtual-Machine:/etc# cat $GBASEDBTSQLHOSTS
gbaseserver onsoctcp lihe-Virtual-Machine gbaseserver
lo_gbaseserver onsoctcp 127.0.0.1 lo_gbaseserver

初始配置中,gbaseserver 绑定主机名,lo_gbaseserver 为本地回环服务。

三、端口开放配置与问题复现

3.1 配置修改思路

要开放端口给远程 IP,需修改 sqlhosts 配置文件,将监听地址从 127.0.1.1 改为服务器网卡 IP (如 192.168.1.171),并确保配置文件包含必要的本地回环服务。

3.2 错误操作与启动失败

在实际操作中,因使用 root 用户直接覆盖写入 sqlhosts 文件,且删除了 lo_gbaseserver 配置,导致数据库重启失败:

bash 复制代码
# 错误操作:覆盖写入 sqlhosts,仅保留 gbaseserver
root@lihe-Virtual-Machine:/etc# cat << EOF > $SQLHOSTS_FILE
gbaseserver onsoctcp 192.168.1.171 9091
EOF

# 重启数据库失败
root@lihe-Virtual-Machine:/etc# oninit -vy
oninit: DBSERVERNAME 'lo_gbaseserver' not in sqlhosts file or sqlhosts file contents are damaged.
WARNING: server initialization failed or timed out.

失败原因分析

  1. 配置缺失sqlhosts 文件中丢失 lo_gbaseserver 配置,而 onconfig 文件中定义的 DBSERVERNAME 依赖该本地服务;
  2. 权限错误 :以 root 用户修改 sqlhosts,导致文件属主/权限异常,gbasedbt 用户无法读取;
  3. 环境变量问题gbasedbt 用户下 $GBASEDBTSQLHOSTS 变量为空,root 用户操作可能指向错误路径。

四、问题修复与正确配置步骤

4.1 核心修复原则

  • 必须以 gbasedbt 用户操作配置文件;
  • sqlhosts 必须包含 gbaseserver(对外服务)和 lo_gbaseserver(本地回环);
  • 配置文件属主需为 gbasedbt:gbasedbt,权限为 644

4.2 分步修复操作

步骤 1:切换到 gbasedbt 用户,定位正确配置文件
bash 复制代码
# 切换用户
root@lihe-Virtual-Machine:/etc# su - gbasedbt

# 定位 onconfig 文件(GBase 8s 核心配置)
$ ONCONFIG_FILE=/opt/GBASE/gbase/etc/onconfig.gbaseserver

# 从 onconfig 中获取 sqlhosts 路径
$ SQLHOSTS_FILE=$(grep -i sqlhosts $ONCONFIG_FILE | awk '{print $2}')

# 若路径为空,使用默认路径
$ if [ -z "$SQLHOSTS_FILE" ]; then SQLHOSTS_FILE=/opt/GBASE/gbase/etc/sqlhosts; fi
步骤 2:备份错误配置,写入完整内容
bash 复制代码
# 备份当前错误配置
$ cp $SQLHOSTS_FILE $SQLHOSTS_FILE.error.bak

# 写入包含双服务的配置(对外服务+本地回环)
$ cat << EOF > $SQLHOSTS_FILE
# 对外服务:绑定服务器网卡 IP,开放 9091 端口
gbaseserver    onsoctcp    192.168.1.171    9091
# 本地回环服务:必须保留,数据库内部通信依赖
lo_gbaseserver onsoctcp    127.0.0.1        9089
EOF
步骤 3:修复配置文件权限
bash 复制代码
# 切换回 root 用户,修正属主和权限
$ exit
root@lihe-Virtual-Machine:/etc# sudo chown gbasedbt:gbasedbt $SQLHOSTS_FILE
root@lihe-Virtual-Machine:/etc# sudo chmod 644 $SQLHOSTS_FILE
步骤 4:重启数据库并验证状态
bash 复制代码
# 切换到 gbasedbt 用户操作
root@lihe-Virtual-Machine:/etc# su - gbasedbt

# 强制停止残留进程
$ onmode -ky

# 启动数据库并输出详细日志
$ oninit -vy

# 验证启动状态
$ onstat -

若启动成功,onstat - 会输出数据库运行状态(如 On-Line)。

步骤 5:验证端口监听状态
bash 复制代码
$ ss -tulnp | grep oninit

预期输出:192.168.1.171:9091127.0.0.1:9089 均处于 LISTEN 状态。

4.3 防火墙与权限放行

1. 防火墙开放 9091 端口(Ubuntu 系统)
bash 复制代码
root@lihe-Virtual-Machine:/etc# sudo ufw allow 9091/tcp
root@lihe-Virtual-Machine:/etc# sudo ufw reload
2. 配置数据库远程访问权限
bash 复制代码
# 切换到 gbasedbt 用户,编辑 .rhosts 文件
$ su - gbasedbt
$ vi $GBASEDBTDIR/etc/.rhosts
# 添加客户端 IP 和用户名
192.168.1.200 gbasedbt

# 数据库用户授权(连接数据库后执行)
$ dbaccess sysmaster -
> GRANT CONNECT TO 远程用户名;

五、远程连接验证

在客户端机器上,使用 dbaccess 工具测试连接:

bash 复制代码
dbaccess -d 数据库名 -u 用户名 -s gbaseserver@192.168.1.171:9091

若成功进入数据库交互界面,说明端口开放配置生效。

六、总结与避坑指南

6.1 关键配置要点

  1. sqlhosts 文件是 GBase 8s 端口配置的核心,必须包含对外服务和本地回环服务;
  2. 所有配置操作需以 gbasedbt 用户执行,避免权限问题;
  3. 修改配置后需重启数据库,通过 onstat - 验证状态。

6.2 常见错误避坑

错误操作 后果 解决方案
root 用户修改配置文件 文件权限异常,数据库无法读取 使用 chown 修正属主为 gbasedbt:gbasedbt
覆盖写入删除 lo_gbaseserver 数据库启动失败 恢复 lo_gbaseserver 配置
监听地址配置错误 远程无法连接 确认配置为服务器网卡 IP,而非 127.0.0.1

6.3 运维建议

  1. 修改配置前备份原文件,防止误操作导致服务不可用;
  2. 数据库日志文件 online.log(通常在 $GBASEDBTDIR/tmp)是排障的重要依据;
  3. 开放端口后,建议通过 nmap 工具验证端口可达性。

七、扩展阅读

  1. GBase 8s 官方文档:sqlhosts 配置与网络通信
  2. Linux 运维手册:ss/netstat 命令实战指南
相关推荐
敲上瘾1 天前
MySQL主从集群解析:从原理到Docker实战部署
android·数据库·分布式·mysql·docker·数据库架构
workflower3 天前
PostgreSQL 数据库优化
数据库·团队开发·数据库开发·时序数据库·数据库架构
吃好喝好玩好睡好5 天前
OpenHarmony下Electron+Flutter应用自动化测试框架构建全流程指南
大数据·flutter·electron·vr·数据库架构
Elastic 中国社区官方博客10 天前
Elasticsearch 中使用 NVIDIA cuVS 实现最高快 12 倍的向量索引速度:GPU 加速第 2 章
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·数据库架构
. . . . .13 天前
Supabase教程
数据库架构
weixin_5377658020 天前
【数据库架构】MySQL读写分离详解
数据库·mysql·数据库架构
_Minato_1 个月前
数据库知识整理——SQL数据定义
数据库·sql·mysql·oracle·database·数据库开发·数据库架构
海边夕阳20061 个月前
MVCC核心原理解密:从隐藏字段到版本链的完整解析
经验分享·学习·数据库架构·mvcc
百胜软件@百胜软件1 个月前
百胜软件做客华为云生态直播间:全渠道中台如何赋能零售数字化与全球布局?
大数据·数据库架构