1. 问题背景与现象分析
最近在银河麒麟(X86_64)系统上处理瀚高安全版V4.5.10数据库时,遇到了一个棘手的问题:卸载数据库后,6666端口仍然被占用,云安全平台检测到该端口异常活动,甚至误报为木马行为。经过排查发现,这是由db_ha的agent进程残留导致的。
重要提示:6666端口在数据库系统中通常用于集群通信,但在未授权情况下开放可能引发安全告警,需要及时处理。
具体现象表现为:
- 通过
netstat -tulnp | grep 6666命令查看,6666端口确实处于监听状态 - 使用
ps -ef | grep db_ha可找到对应的agent进程 - 但该进程的安装目录已经不存在(因为数据库已被卸载)
- 服务器重启后该端口仍然会被占用
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题根源探究
2.1 瀚高安全版的组件架构
瀚高安全版V4.5.10安装时会自动部署三个核心组件:
- db_ha:高可用组件,包含agent进程
- hghac:集群管理组件
- hgproxy:代理服务组件
这些组件在安装时都会被配置为systemd服务并启用开机自启。关键在于它们的卸载行为存在差异:
| 组件 | 卸载时是否删除service文件 | 卸载时是否停止服务 |
|---|---|---|
| db_ha | 否 | 否 |
| hghac | 是 | 是 |
| hgproxy | 是 | 是 |
2.2 问题发生的具体机制
当发生以下操作序列时,就会出现端口占用问题:
- 安装瀚高安全版V4.5.10(所有组件设置为开机启动)
- 正常使用数据库
- 卸载数据库(但db_ha相关服务未被正确处理)
- 服务器重启
- systemd根据残留的service文件启动db_ha-agent
- 但实际可执行文件已被卸载,导致"僵尸"进程占用端口
3. 解决方案与实操步骤
3.1 立即处理已存在的问题
对于已经出现6666端口占用的情况,请按以下步骤处理:
bash复制# 1. 查找并终止残留进程
sudo pkill -f db_ha-agent
# 2. 确认端口已释放
sudo netstat -tulnp | grep 6666
# 3. 禁用开机自启(如果service文件还存在)
sudo systemctl disable db_ha-agent
# 4. 删除残留的service文件
sudo rm -f /usr/lib/systemd/system/db_ha-agent.service
# 5. 重新加载systemd配置
sudo systemctl daemon-reload
3.2 预防性配置建议
在初次安装瀚高安全版V4.5.10时,建议采取以下预防措施:
bash复制# 安装后立即禁用不必要的自启服务
sudo systemctl disable db_ha-agent
sudo systemctl disable hghac
sudo systemctl disable hgproxy
# 按需手动启用真正需要的服务
# sudo systemctl enable [所需服务]
3.3 完整的卸载检查清单
为确保彻底卸载,建议执行以下完整流程:
- 标准卸载操作
- 检查并清理残留进程:
bash复制sudo ps -ef | grep -E 'db_ha|hghac|hgproxy' - 删除所有相关service文件:
bash复制sudo rm -f /usr/lib/systemd/system/{db_ha-agent,hghac,hgproxy}.service - 清理配置文件残留:
bash复制sudo rm -rf /etc/db_ha /etc/hghac /etc/hgproxy - 重新加载systemd:
bash复制sudo systemctl daemon-reload
4. 深入分析与技术细节
4.1 db_ha组件的工作机制
db_ha-agent作为高可用组件的一部分,主要承担以下职责:
- 集群节点间心跳检测(使用6666端口)
- 故障转移协调
- 资源监控和数据同步
其服务定义通常包含以下关键配置:
ini复制[Unit]
Description=HighGo DB HA Agent
After=network.target
[Service]
Type=forking
ExecStart=/opt/HighGo/db_ha/bin/start_agent.sh
ExecStop=/opt/HighGo/db_ha/bin/stop_agent.sh
[Install]
WantedBy=multi-user.target
4.2 端口冲突的风险评估
6666端口被占用可能导致以下问题:
- 安全扫描误报(如文中提到的木马误判)
- 新安装的瀚高数据库无法正常启动集群功能
- 其他应用无法使用该端口
- 可能影响系统安全审计结果
5. 经验总结与最佳实践
在实际运维中,我总结了以下经验教训:
-
安装后第一时间检查:
bash复制# 查看所有新增的systemd服务 sudo systemctl list-unit-files | grep highgo # 检查监听端口 sudo ss -tulnp | grep -E '6666|5432' -
维护组件状态清单:
建议建立如下表格记录组件状态:组件 是否必需 运行状态 自启状态 端口 db_ha 按需 6666 hghac 按需 5866 hgproxy 按需 5433 -
卸载前的预处理:
bash复制# 卸载前先停止所有服务 sudo systemctl stop db_ha-agent hghac hgproxy # 禁用自启 sudo systemctl disable db_ha-agent hghac hgproxy -
验证卸载完整性的方法:
bash复制# 检查进程 sudo ps -ef | grep -E 'highgo|hg' # 检查文件残留 sudo find / -name "*highgo*" -o -name "*hg*" # 检查端口 sudo netstat -tulnp
对于数据库产品的运维,特别是安全版本,需要特别注意其附加组件的管理。建议在测试环境验证所有安装卸载流程后再在生产环境实施,同时做好详细的操作记录和状态检查清单。
