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

Doris连接故障一键排查脚本

以下是 Doris 连接故障排查一键脚本,涵盖「环境检查、FE 状态、端口连通、连接测试」全流程,输出清晰的排查结果和解决方案,支持 Linux 主流发行版(CentOS、Ubuntu 等),可直接在终端执行。

脚本功能

  1. 检查 MySQL 客户端是否安装(Doris 连接核心工具)
  2. 检查 Doris FE 进程状态(是否存活)
  3. 测试 FE 关键端口连通性(9030 查询端口、10010 JDBC 端口)
  4. 模拟实际连接测试(用用户配置的账号密码尝试连接)
  5. 汇总故障点 + 给出针对性解决方案

排查脚本(doris_conn_check.sh)

#!/bin/bash
set -euo pipefail# ==================== 配置参数(用户需根据实际环境修改)====================
FE_IP="192.168.1.100"          # Doris FE 节点IP(必填)
FE_QUERY_PORT="9030"           # FE 查询端口(默认9030)
FE_JDBC_PORT="10010"           # FE JDBC端口(默认10010)
DORIS_USER="root"              # Doris 登录用户名(默认root)
DORIS_PASS="123456"            # Doris 密码(为空则填"",如 DORIS_PASS="")
DORIS_DB="default"             # 要连接的数据库(默认default)
# ==========================================================================# 颜色定义(美化输出)
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
BLUE="\033[34m"
NC="\033[0m"  # 重置颜色# 故障汇总数组
ERRORS=()# ==================== 1. 环境检查:MySQL客户端是否安装 ====================
echo -e "\n${BLUE}=== 步骤1:检查 MySQL 客户端安装状态 ===${NC}"
if command -v mysql &> /dev/null; thenecho -e "${GREEN}[✅ 成功] MySQL 客户端已安装(版本:$(mysql --version | awk '{print $5}' | cut -d',' -f1))${NC}"
elseecho -e "${RED}[❌ 故障] MySQL 客户端未安装(Doris 依赖 MySQL 协议连接)${NC}"ERRORS+=("MySQL客户端未安装")# 自动判断系统包管理器,给出安装命令if command -v yum &> /dev/null; thenecho -e "${YELLOW}[解决方案] 执行:yum install -y mysql${NC}"elif command -v apt &> /dev/null; thenecho -e "${YELLOW}[解决方案] 执行:apt update && apt install -y mysql-client${NC}"elseecho -e "${YELLOW}[解决方案] 手动安装 MySQL 客户端(兼容 MySQL 5.7+ 版本)${NC}"fi
fi# ==================== 2. 检查 FE 进程状态(仅在 FE 节点执行有效)====================
echo -e "\n${BLUE}=== 步骤2:检查 Doris FE 进程状态 ===${NC}"
FE_PID=$(ps aux | grep -v grep | grep "doris_fe" | awk '{print $2}')
if [ -n "$FE_PID" ]; thenecho -e "${GREEN}[✅ 成功] FE 进程正在运行(PID:$FE_PID)${NC}"# 额外检查 FE 日志是否有异常(可选,需 FE 安装路径)FE_LOG_PATH="${DORIS_HOME:-/opt/doris/fe}/log/fe.log"if [ -f "$FE_LOG_PATH" ]; thenERROR_LOGS=$(tail -100 "$FE_LOG_PATH" | grep -i "error" | wc -l)if [ "$ERROR_LOGS" -gt 0 ]; thenecho -e "${YELLOW}[⚠️  警告] FE 日志中存在 $ERROR_LOGS 条错误记录,建议查看:tail -100 $FE_LOG_PATH${NC}"fifi
elseecho -e "${RED}[❌ 故障] FE 进程未启动(连接 Doris 核心依赖 FE 节点)${NC}"ERRORS+=("FE进程未启动")echo -e "${YELLOW}[解决方案] 1. 切换到 FE 安装目录;2. 执行:bin/start_fe.sh --daemon${NC}"
fi# ==================== 3. 测试 FE 端口连通性 ====================
echo -e "\n${BLUE}=== 步骤3:测试 FE 端口连通性 ===${NC}"
test_port() {local IP=$1local PORT=$2local PORT_NAME=$3if nc -zv "$IP" "$PORT" &> /dev/null; thenecho -e "${GREEN}[✅ 成功] $PORT_NAME($PORT 端口)连通正常${NC}"elseecho -e "${RED}[❌ 故障] $PORT_NAME($PORT 端口)无法连通${NC}"ERRORS+=("$PORT_NAME端口不通")echo -e "${YELLOW}[排查方向]${NC}"echo -e "  1. 确认 FE 配置文件(fe.conf)中 port_query=$PORT / jdbc_port=$PORT"echo -e "  2. 检查 FE 节点防火墙:firewall-cmd --list-ports | grep $PORT(CentOS)或 ufw status(Ubuntu)"echo -e "  3. 临时开放端口:firewall-cmd --add-port=$PORT/tcp --permanent && firewall-cmd --reload(CentOS)"fi
}# 测试核心端口(9030 是 MySQL 客户端连接端口,必测;10010 可选)
test_port "$FE_IP" "$FE_QUERY_PORT" "FE 查询端口"
test_port "$FE_IP" "$FE_JDBC_PORT" "FE JDBC 端口"# ==================== 4. 实际连接测试(模拟用户连接场景)====================
echo -e "\n${BLUE}=== 步骤4:模拟 Doris 连接测试 ===${NC}"
if [ -z "$(command -v mysql &> /dev/null && echo 1)" ]; thenecho -e "${YELLOW}[⚠️  跳过] MySQL 客户端未安装,无法执行连接测试${NC}"
else# 处理密码为空的情况(-p 后不加密码)if [ -z "$DORIS_PASS" ]; thenCONN_CMD="mysql -h $FE_IP -P $FE_QUERY_PORT -u $DORIS_USER -p -D $DORIS_DB -e 'select version();' 2>&1"elseCONN_CMD="mysql -h $FE_IP -P $FE_QUERY_PORT -u $DORIS_USER -p$DORIS_PASS -D $DORIS_DB -e 'select version();' 2>&1"fi# 执行连接测试CONN_RESULT=$(eval "$CONN_CMD")if echo "$CONN_RESULT" | grep -q "Doris"; thenecho -e "${GREEN}[✅ 成功] Doris 连接测试通过!${NC}"echo -e "${BLUE}[连接命令参考]${NC}:mysql -h $FE_IP -P $FE_QUERY_PORT -u $DORIS_USER -p -D $DORIS_DB"elseecho -e "${RED}[❌ 故障] Doris 连接失败(错误信息:$CONN_RESULT)${NC}"ERRORS+=("Doris连接失败")# 常见错误解决方案if echo "$CONN_RESULT" | grep -q "Access denied"; thenecho -e "${YELLOW}[解决方案] 1. 检查用户名/密码是否正确;2. 给用户授权:GRANT ALL ON $DORIS_DB.* TO '$DORIS_USER'@'%';${NC}"elif echo "$CONN_RESULT" | grep -q "Can't connect to MySQL server"; thenecho -e "${YELLOW}[解决方案] 参考步骤3,确认 FE 端口是否开放、FE 进程是否正常${NC}"elif echo "$CONN_RESULT" | grep -q "Unknown database"; thenecho -e "${YELLOW}[解决方案] 数据库 $DORIS_DB 不存在,执行:CREATE DATABASE IF NOT EXISTS $DORIS_DB;${NC}"fifi
fi# ==================== 5. 故障汇总 ====================
echo -e "\n${BLUE}=== 排查总结 ===${NC}"
if [ ${#ERRORS[@]} -eq 0 ]; thenecho -e "${GREEN}[🎉 全部正常] 未发现 Doris 连接相关故障,可直接使用连接命令操作!${NC}"
elseecho -e "${RED}[❌ 发现 ${#ERRORS[@]} 个故障]${NC}:${ERRORS[*]}"echo -e "${YELLOW}[建议] 按上述步骤逐一修复故障后,重新执行脚本验证${NC}"
fi

使用说明

1. 脚本准备
  1. 复制上述脚本内容,在 Linux 终端创建文件:
    vi doris_conn_check.sh
    
  2. 按 i 进入编辑模式,粘贴脚本,然后按 Esc,输入 :wq 保存退出。
2. 配置参数(关键!)

打开脚本,修改开头的 配置参数 为你的实际环境信息:

FE_IP="192.168.1.100"          # 你的 Doris FE 节点IP(比如 FE 所在机器的内网IP)
FE_QUERY_PORT="9030"           # 保持默认9030,若修改过 fe.conf 则对应修改
DORIS_USER="root"              # 你的 Doris 用户名(默认root)
DORIS_PASS="123456"            # 你的 Doris 密码(为空则填 DORIS_PASS="")
DORIS_DB="default"             # 要连接的数据库(默认default即可)
3. 执行脚本
  1. 给脚本添加执行权限
    chmod +x doris_conn_check.sh
    
  2. 运行脚本:
    ./doris_conn_check.sh
    

脚本输出示例(故障场景)

=== 步骤1:检查 MySQL 客户端安装状态 ===
[✅ 成功] MySQL 客户端已安装(版本:8.0.36)=== 步骤2:检查 Doris FE 进程状态 ===
[❌ 故障] FE 进程未启动(连接 Doris 核心依赖 FE 节点)
[解决方案] 1. 切换到 FE 安装目录;2. 执行:bin/start_fe.sh --daemon=== 步骤3:测试 FE 端口连通性 ===
[❌ 故障] FE 查询端口(9030 端口)无法连通
[排查方向]1. 确认 FE 配置文件(fe.conf)中 port_query=90302. 检查 FE 节点防火墙:firewall-cmd --list-ports | grep 9030(CentOS)或 ufw status(Ubuntu)3. 临时开放端口:firewall-cmd --add-port=9030/tcp --permanent && firewall-cmd --reload(CentOS)
[✅ 成功] FE JDBC 端口(10010 端口)连通正常=== 步骤4:模拟 Doris 连接测试 ===
[❌ 故障] Doris 连接失败(错误信息:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.100' (111))
[解决方案] 参考步骤3,确认 FE 端口是否开放、FE 进程是否正常=== 排查总结 ===
[❌ 发现 2 个故障]:FE进程未启动、FE 查询端口端口不通
[建议] 按上述步骤逐一修复故障后,重新执行脚本验证

常见故障修复优先级

  1. FE 进程未启动 → 先启动 FE(bin/start_fe.sh --daemon
  2. MySQL 客户端未安装 → 按脚本提示安装(yum/apt install mysql
  3. 9030 端口不通 → 关闭防火墙或开放端口(核心连接端口)
  4. 用户名 / 密码错误 → 确认账号密码,或重置密码(ALTER USER 'root'@'%' IDENTIFIED BY '新密码';

如果脚本执行后仍无法连接,可提供脚本输出日志,我帮你进一步定位问题!

http://www.dtcms.com/a/566510.html

相关文章:

  • 青岛电商网站制作官方网站的网络营销功能分析
  • 教育网站制作实训报告如何搭建一个网站平台
  • 贵州城乡建设部网站首页什么是自媒体
  • SQLite Distinct 关键字
  • 祝贺公司网站上线做调查赚钱的网站有哪些
  • 网络直播网站开发注册网站好的平台
  • 黑龙江网站备案公司网站未备案
  • ThreadLocal用法及实现原理解析
  • 太原建筑市场网站中国建设银行邢台分行网站
  • 怎样利用关键词来打动读者
  • Deinterleaving of Mixtures of Renewal Processes
  • 设计师网站有哪些wordpress安装多说
  • 哪有网站给光头强做面企业官网小程序源码
  • 大同建设银行保安招聘网站淄博网站制作价格低
  • C#上位机卡顿解决方法1——获取内存占用率
  • 各大搜索引擎网站登录入口网站帮企业做推广价格怎么算
  • 哈尔滨网站建设优化网站页面构成要素
  • OCR图片识别翻译工具功能及源码
  • vue3 抽取el-drawer子组件
  • 杭州专业网站建设佛山cms模板建站
  • TCP可靠传输的秘密:从滑动窗口到拥塞控制
  • 宝塔做网站安全吗做网站龙华
  • safetensors转为gguf,并在ollama中部署
  • 做二手车按揭的网站艺术培训机构
  • 如何给网站做右侧导航互联网网络推广公司
  • 公司网站优化推广宁波企业名称查询网站
  • 做淘宝客网站服务器高新网站建设
  • Mysql 读书笔记
  • 网上做任务佣金高的网站wordpress付费浏览
  • Flutter---卡片交换器