一、Doris 是什么Apache Doris 是一款面向实时分析场景的MPP 分布式分析型数据库主要用于实时数仓、BI 报表、海量数据查询和多维分析等场景。Doris 采用典型的FE BE架构FEFrontend负责 SQL 接入、用户认证、SQL 解析与优化、元数据管理、查询调度以及 FE 节点选主。BEBackend负责实际数据存储、Tablet 管理、副本保存以及 SQL 的并行计算。可以简单理解为FE 负责“接入、管理和调度”BE 负责“存储和计算”。二、Doris 标准生产高可用架构生产环境通常采用3 个 Follower FE 多个 BE VIP/LB典型架构如下应用 / BI / ETL │ │ MySQL协议 ▼ VIP : 9030 │ KeepalivedVIP高可用 │ ┌───────────┴───────────┐ │ │ HAProxy-01 HAProxy-02 Active Standby │ │ 负载均衡 / 健康检查 ▼ ┌──────────┬──────────┐ │ │ │ FE1 FE2 FE3 FOLLOWER FOLLOWER FOLLOWER │ │ │ └──────────┼──────────┘ │ 其中1台为Master │ SQL解析 / 优化 / 调度 │ ┌────────────┼────────────┐ ▼ ▼ ▼ BE1 BE2 BE3... │ │ │ └── Tablet多副本 MPP计算 ──┘整体访问链路可以概括为应用 → VIP/LB → FE → BE三、FE 高可用机制FE 主要负责SQL 接入用户认证与权限管理SQL 解析与优化元数据管理查询任务调度Master 选举标准生产环境通常部署3 个 FOLLOWER FE例如FE1 FOLLOWER FE2 FOLLOWER FE3 FOLLOWER ← 当前Master需要注意Master 并不是独立的一种 FE 类型而是从 Follower 中选举出来的。当当前 Master 故障时其余 Follower 可以重新选举新的 Master。3 个 Follower 中只要剩余 2 个正常就仍然具备多数派因此可以容忍 1 个 FE 故障。所以生产环境中最常见的是3 个 Follower FE其中 1 台为 Master另外 2 台为 Follower。FE 选举依赖多数派因此参与选举的 Follower 数量通常采用奇数如3 5 7小中型 Doris 集群最常见的是3 个 Follower。四、BE 高可用机制BE 主要负责数据存储Tablet 管理数据副本SQL 扫描聚合、过滤、JoinMPP 并行计算BE 和 FE 不同BE 不要求节点数量必须为奇数。可以部署3台 4台 5台 6台 ……具体数量根据数据容量、查询并发和性能要求决定。BE 的高可用核心是Tablet 多副本。例如一个 Tablet 配置 3 个副本Tablet A ├── 副本1 → BE1 ├── 副本2 → BE2 └── 副本3 → BE3当其中一台 BE 故障时其他 BE 上仍然保存着该 Tablet 的副本。因此可以简单记住FE 高可用靠 Follower 多数派选举。BE 高可用靠 Tablet 多副本。五、为什么生产环境要增加 VIP / LB虽然应用可以直接连接某一台 FE应用 → FE1:9030但生产环境不建议长期固定绑定单个 FE。因为 FE 可能发生节点故障服务重启计划维护Master 切换因此推荐使用统一访问入口应用 │ ▼ VIP : 9030 │ 负载均衡层 │ ┌────────┼────────┐ ▼ ▼ ▼ FE1 FE2 FE3 :9030 :9030 :9030应用只需要连接VIP:9030不需要关心当前哪一台FE是Master也不建议应用固定连接当前 Master。六、Keepalived 和 VIP 是什么关系VIP 本身只是一个统一访问地址。如果是自建高可用入口常见组合是Keepalived HAProxy或者Keepalived Nginx它们的职责不同。Keepalived主要负责VIP漂移例如LB1 正常 VIP → LB1当 LB1 故障LB1 × ↓ VIP自动漂移 ↓ LB2因此 Keepalived 解决的是VIP 本身不能成为单点。HAProxy / Nginx主要负责FE 健康检查TCP 连接转发将连接分发到多个正常 FE所以完整链路通常是应用 ↓ VIP ↓ Keepalived ↓ HAProxy / Nginx ↓ FE1 / FE2 / FE3如果企业已经使用F5LVS硬件负载均衡云 LB则不一定需要单独部署 Keepalived。因此Keepalived 不是 Doris 必需组件而是实现 VIP 高可用的一种常见方案。七、为什么 Doris 可以使用 mysql 登录Doris 本身不是 MySQL。但是 Doris FE 兼容MySQL Wire Protocol所以可以直接使用 MySQL 客户端连接。例如mysql -h VIP地址 -P 9030 -u用户名 -p连接关系MySQL客户端 │ │ MySQL协议 ▼ Doris FE : 9030因此登录时即使看到mysql或者Server version: 5.7.99 Doris version ...也不代表 Doris 是 MySQL。准确理解应该是Doris 兼容 MySQL 通信协议因此可以使用 mysql、JDBC、DBeaver、DataGrip 等工具连接。八、登录 Doris通常通过 FE 的9030端口登录。通过 VIPmysql -h VIP地址 -P 9030 -u管理员用户 -p也可以直接连接某个 FE 进行运维检查mysql -h FE地址 -P 9030 -u管理员用户 -p九、登录后查看 Doris 版本SELECT VERSION();建议巡检时首先确认 Doris 版本不同大版本之间部分命令和功能可能存在差异。十、查看有几个 FE执行SHOW FRONTENDS;重点关注Host / IP Role IsMaster Alive LastHeartbeat ErrMsg Version标准生产架构通常类似FE1 FOLLOWER IsMasterfalse Alivetrue FE2 FOLLOWER IsMasterfalse Alivetrue FE3 FOLLOWER IsMastertrue Alivetrue通过这个命令可以快速确认FE 一共有几台哪台是当前 MasterFE 是否全部存活FE 角色是否正常FE 版本是否一致是否存在异常信息正常情况下重点关注Alive true ErrMsg 空十一、查看有几个 BE执行SHOW BACKENDS;有多少条 BE 记录就代表当前集群注册了多少个 BE。例如BE1 Alivetrue BE2 Alivetrue BE3 Alivetrue BE4 Alivetrue BE5 Alivetrue则表示BE数量 5重点关注Alive TabletNum DataUsedCapacity AvailCapacity UsedPct MaxDiskUsedPct HeartbeatFailureCounter ErrMsg其中Alivetrue代表 BE 正常存活。TabletNum查看各 BE 上 Tablet 数量是否明显失衡。例如BE1 1500 BE2 1520 BE3 1490整体比较均衡。UsedPct / MaxDiskUsedPct用于判断 BE 数据盘空间是否存在压力或倾斜。HeartbeatFailureCounter正常情况下通常应为0持续增加需要关注 FE 与 BE 之间的网络、进程或节点状态。十二、基础巡检常用命令登录后一轮基础检查可以执行SELECT VERSION(); SHOW FRONTENDS; SHOW BACKENDS; SHOW DATABASES; SHOW PROCESSLIST;其中最核心的是SHOW FRONTENDS; SHOW BACKENDS;通过这两个命令基本就可以快速判断FE有几台 谁是Master FE是否全部Alive BE有几台 BE是否全部Alive Tablet是否均衡 磁盘是否健康 是否存在异常心跳十三、标准生产架构核心总结一套典型的 Doris 生产高可用架构可以理解为应用 │ ▼ VIP │ Keepalived │ HAProxy/Nginx │ ┌───────────┼───────────┐ ▼ ▼ ▼ FE1 FE2 FE3 FOLLOWER FOLLOWER FOLLOWER │ 其中1台Master │ SQL解析 / 优化 / 调度 │ ┌─────┬──────┼──────┬─────┐ ▼ ▼ ▼ ▼ ▼ BE1 BE2 BE3 BE4 BE5 │ │ │ │ │ └── Tablet多副本 MPP计算 ──┘核心记住五句话即可Doris 是 FE BE 的分布式 MPP 分析型数据库。FE 负责 SQL 接入、元数据和调度生产通常部署 3 个 Follower其中 1 个自动成为 Master。BE 负责数据存储和计算节点数量不要求奇数数据高可用依赖 Tablet 多副本。应用生产接入建议通过 VIP/LB 访问 FE 的 9030不直接连接 BE也不固定连接当前 Master。Keepalived 可以负责 VIP 漂移HAProxy/Nginx 负责多个 FE 的健康检查和连接分发。
