当前位置: 首页 > news >正文

实战 | 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 核心进程)是否正常运行:

root@lihe-Virtual-Machine:/etc# ps -ef | grep gbasegbasedbt608031016:31 ? 00:00:00 oninit root6643918363016:47 pts/0 00:00:00grep--color=auto gbase

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

2.2 定位进程占用的端口

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

root@lihe-Virtual-Machine:/etc# sudo ss -tulnp | grep 9091tcp LISTEN0512127.0.1.1:90910.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配置文件确认映射:

# 查看 sqlhosts 初始配置root@lihe-Virtual-Machine:/etc# cat $GBASEDBTSQLHOSTSgbaseserver onsoctcp lihe-Virtual-Machine gbaseserver lo_gbaseserver onsoctcp127.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配置,导致数据库重启失败:

# 错误操作:覆盖写入 sqlhosts,仅保留 gbaseserverroot@lihe-Virtual-Machine:/etc# cat << EOF > $SQLHOSTS_FILEgbaseserver onsoctcp192.168.1.1719091EOF# 重启数据库失败root@lihe-Virtual-Machine:/etc# oninit -vyoninit: DBSERVERNAME'lo_gbaseserver'notinsqlhostsfileor sqlhostsfilecontents 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用户,定位正确配置文件
# 切换用户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"];thenSQLHOSTS_FILE=/opt/GBASE/gbase/etc/sqlhosts;fi
步骤 2:备份错误配置,写入完整内容
# 备份当前错误配置$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:修复配置文件权限
# 切换回 root 用户,修正属主和权限$exitroot@lihe-Virtual-Machine:/etc# sudo chown gbasedbt:gbasedbt $SQLHOSTS_FILEroot@lihe-Virtual-Machine:/etc# sudo chmod 644 $SQLHOSTS_FILE
步骤 4:重启数据库并验证状态
# 切换到 gbasedbt 用户操作root@lihe-Virtual-Machine:/etc# su - gbasedbt# 强制停止残留进程$ onmode -ky# 启动数据库并输出详细日志$ oninit -vy# 验证启动状态$ onstat -

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

步骤 5:验证端口监听状态
$ ss -tulnp|greponinit

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

4.3 防火墙与权限放行

1. 防火墙开放 9091 端口(Ubuntu 系统)
root@lihe-Virtual-Machine:/etc# sudo ufw allow 9091/tcproot@lihe-Virtual-Machine:/etc# sudo ufw reload
2. 配置数据库远程访问权限
# 切换到 gbasedbt 用户,编辑 .rhosts 文件$su- gbasedbt $vi$GBASEDBTDIR/etc/.rhosts# 添加客户端 IP 和用户名192.168.1.200 gbasedbt# 数据库用户授权(连接数据库后执行)$ dbaccess sysmaster ->GRANT CONNECT TO 远程用户名;

五、远程连接验证

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

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命令实战指南
http://www.cnnetsun.cn/news/42940.html

相关文章:

  • MFC消息处理机制
  • 商业级图像合成引擎6.0版本重磅发布:解锁跨场景视觉创作新范式
  • MyBatis-Plus与Spring整合(02--Service的代理)
  • 11、渗透测试实战:目标探索、利用与攻击行动
  • 16、攻击收尾:报告与撤离
  • 20、树莓派的替代项目探索
  • 事件查看器-事件ID
  • 单步出图革命:Consistency Model如何以100倍效率重构AI绘画产业格局
  • 搭建鸿蒙PC命令行适配环境测试hello程序
  • 编辑相似度(Edit Similarity):原理、演进与多模态扩展
  • 【深度解析】MiniCPM 2.0:端侧大模型的技术性进展与技术革新
  • ClickHouse 快速入门
  • 基于SpringBoot的人事管理系统设计与实现
  • 【论文阅读】Multi-modal Spatial Clustering for Spatial Transcriptomics Utilizing High-resolution Histology
  • Day36官方文档的阅读
  • Windows右键菜单终极优化指南:让你的右键菜单重获新生
  • ZTools v1.1.2:桌面应用启动器与搜索工具
  • Flutter Android APK 重命名 签名验证操作
  • MarchingCubes 网格数据体素化并提取等值面
  • 基于SpringBoot的餐厅推荐系统 计算机毕业设计选题 计算机毕设项目 前后端分离 【源码-文档报告-代码讲解】
  • 禁用MinIO后的7种企业级替代方案评测
  • document.querySelector在电商网站中的5个实战应用
  • 企业级应用:OpenJDK1.8在生产环境中的部署实践
  • Homebrew实战:从安装到开发环境搭建全流程
  • 企业级Git仓库SSH连接安全最佳实践
  • Day12 贝叶斯优化可视化和随机森林的解读
  • 数据湖不是湖,是江湖:Delta Lake / Iceberg / Hudi 到底该选谁?
  • 告别开题报告模板拼凑!虎贲等考 AI 智能生成,让选题逻辑从模糊想法变身可执行研究计划
  • 【LeetCode刷题】跳跃游戏
  • 鸿蒙PC UI控件库 - PasswordInput 密码输入框详解