Apache Doris 版本升级指南 | 从 2.0.1.1 到 2.1.11
本文档详细介绍 Apache Doris 从 2.0.1.1 升级到 2.1.11 的完整操作流程,包含两阶段升级路径、升级前准备、滚动升级步骤、回滚方案等内容。
一、升级路径规划
1.1 版本升级路径
Apache Doris 版本号由三位组成:主版本号.次版本号.修订版本号(X.Y.Z)。本次升级建议分两个阶段执行:
| 阶段 | 起始版本 | 目标版本 | 说明 |
|---|---|---|---|
| 第一阶段 | 2.0.1.1 | 2.0.15(或最新 2.0.x) | 先升级到 2.0 系列最新版本,修复潜在 Bug |
| 第二阶段 | 2.0.15 | 2.1.11 | 跳跃到 2.1 大版本稳定版 |
1.2 为什么不建议直接从 2.0.1.1 升级到 2.1.11
- 2.0.1.1 发布较早,存在已在 2.0.15 中修复的 Bug,直接跨越大版本风险较高
- 2.1.x FE 元数据格式变化较大,跨度升级存在兼容性风险
- 官方建议:跨次版本升级前,建议先升级到该系列的最新修订版本
- 分阶段升级有助于问题定位,升级失败时更易回滚
⚠️ 重要提醒:2.0.1.1 不能直接跨版本升级到 2.1.11,需要先升到 2.0.15 做过渡。升级前务必备份 FE 元数据!
1.3 升级方式:滚动升级
Doris 支持滚动升级(Rolling Upgrade),可逐节点升级 FE 和 BE,最大限度减少停机时间。
- 升级顺序:先升级 BE,再升级 FE
- BE 保持向后兼容 FE
- 每个节点升级后需验证服务正常,再继续下一个节点
二、升级前准备
2.1 集群健康检查
在执行升级前,请确保集群处于健康状态:
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| FE 进程状态 | ps aux | grep DorisFE | grep -v grep | 进程存在 |
| BE 进程状态 | ps aux | grep DorisBE | grep -v grep | 进程存在 |
| FE 节点状态 | SHOW FRONTENDS; | VisibleState = true |
| BE 节点状态 | SHOW BACKENDS; | Alive = true |
| 集群可用性 | SHOW DORIS CLUSTER; | 正常返回 |
| BE 磁盘空间 | df -h(各节点) | 使用率 < 80% |
2.2 备份元数据(重要)
2.2.1 备份 FE 元数据
FE 元数据是集群的核心,一旦损坏将导致集群不可用。务必在升级前完成备份:
# fe.conf 中 metadata_dir 默认路径:fe/doris-meta cp -r /path/to/fe/doris-meta /path/to/fe/doris-meta.bak.$(date +%Y%m%d)
2.2.2 备份 FE 和 BE 配置
# 备份 FE 配置 cp -r /path/to/fe/conf /path/to/fe/conf.bak.$(date +%Y%m%d) # 备份 BE 配置 cp -r /path/to/be/conf /path/to/be/conf.bak.$(date +%Y%m%d)
2.2.3 导出数据库结构
# 在 mysql-client 中执行,导出所有数据库 mysqldump -h fe_host -P 9030 -u root -p --no-tablespaces --databases db1 db2 db3 > /tmp/doris_metadata_$(date +%Y%m%d).sql
2.3 下载安装包
# 2.0.15(第一阶段) wget https://archive.apache.org/dist/doris/2.0.15/apache-doris-2.0.15-bin.tar.gz # 2.1.11(第二阶段) wget https://archive.apache.org/dist/doris/2.1.11/apache-doris-2.1.11-bin.tar.gz # 解压 tar -xzf apache-doris-2.0.15-bin.tar.gz -C /opt/ tar -xzf apache-doris-2.1.11-bin.tar.gz -C /opt/ # 重命名 mv /opt/apache-doris-2.0.15-bin /opt/doris-2.0.15 mv /opt/apache-doris-2.1.11-bin /opt/doris-2.1.11
2.4 设置维护窗口
⚠️ 重要提醒:升级操作建议在业务低峰期进行,并预留足够的维护窗口时间(建议至少 2-4 小时)。请提前通知业务方并确认应急回滚方案。
三、第一阶段:2.0.1.1 → 2.0.15
3.1 升级 BE 节点(滚动升级)
按以下步骤逐台升级 BE 节点。每节点升级后确认 Alive=true,再继续下一台。
步骤 1:退役目标 BE 节点
# 方式一:通过 API 下线该 BE curl -X POST "http://fe_host:8030/api/backend/drop?host=be_host&port=be_http_port" # 方式二:直接停止 BE(确认数据已迁移完毕) curl http://be_host:be_http_port/api/health stop_be.sh --daemon
步骤 2:替换 BE 目录
# 备份旧版 BE mv /path/to/be /path/to/be.old.2.0.1.1 # 复制新版 BE cp -r /opt/doris-2.0.15/be /path/to/be # 恢复原有配置 cp -r /path/to/be.old.2.0.1.1/conf/* /path/to/be/conf/ # 确认目录权限 chown -R doris:doris /path/to/be
步骤 3:启动新 BE 并验证
# 启动 BE
start_be.sh --daemon
# 检查状态
curl http://be_host:be_http_port/api/health
# 期望返回:{"status": "OK"}
# 在 FE 检查 BE 状态
mysql -h fe_host -P 9030 -u root -p -e "SHOW BACKENDS;" | grep be_host
注意:每个 BE 节点升级后,请在 FE 端确认其状态为 Alive=true,再继续升级下一个节点。
3.2 升级 FE 节点
步骤 1:停止 Follower FE 节点
# 查看当前 FE 角色和状态 mysql -h fe_host -P 9030 -u root -p -e "SHOW FRONTENDS;" # 在目标 FE 节点停止 FE stop_fe.sh --daemon
步骤 2:替换 FE 目录
# 备份旧版 FE mv /path/to/fe /path/to/fe.old.2.0.1.1 # 复制新版 FE cp -r /opt/doris-2.0.15/fe /path/to/fe # 恢复原有配置(注意保留元数据目录) cp -r /path/to/fe.old.2.0.1.1/conf/* /path/to/fe/conf/ # fe.conf 中 metadata_dir 需指向原元数据目录 chown -R doris:doris /path/to/fe
步骤 3:启动 FE 并验证
# 启动 FE start_fe.sh --daemon # 等待 30-60 秒后检查 FE 状态 mysql -h fe_host -P 9030 -u root -p -e "SHOW FRONTENDS;" | grep fe_host # 简单查询测试 mysql -h fe_host -P 9030 -u root -p -e "SELECT 1;"
注意:若 FE 启动失败,请检查 fe/log/fe.log 中的错误信息。回滚方法:停止新版 FE,恢复旧版目录,重启即可。
3.3 第一阶段验证清单
| 验证项 | 命令/方法 | 判断标准 |
|---|---|---|
| FE 进程正常 | ps aux | grep DorisFE | 进程存在 |
| FE 日志无异常 | grep -i error fe/log/fe.log | 无 Error 级报错 |
| BE 进程正常 | ps aux | grep DorisBE | 进程存在 |
| 所有 BE Alive | SHOW BACKENDS | 所有行 Alive=true |
| 所有 FE Alive | SHOW FRONTENDS | 所有行 Alive=true |
| 集群可读写 | SELECT 1; INSERT; DELETE; | 正常执行 |
| 副本完整性 | SHOW PROC “/statistic” | Tablet 副本数正常 |
四、第二阶段:2.0.15 → 2.1.11
4.1 升级前确认
- 第一阶段升级后集群运行稳定至少 24 小时再进行第二阶段
- 确认 2.1.11 版本 release notes 中的已知问题不影响当前业务
- 确认使用的第三方工具(Flink Connector、Spark Connector 等)与 2.1.11 兼容
4.2 2.1.x 主要新特性(需了解)
| 特性 | 说明 | 是否影响旧业务 |
|---|---|---|
| Auto Partition | 导入时自动创建分区,无需手动预创建 | 不影响(仅新功能) |
| Group Commit | 服务端批量提交,高并发写入 | 不影响(可选开启) |
| VARIANT 类型 | 支持半结构化数据列存化存储 | 不影响(新增类型) |
| 运行时资源查看 | 可实时查看 SQL 资源使用情况 | 不影响(新功能) |
| MemTable 前移 | INSERT INTO SELECT 性能翻倍 | 不影响(内部优化) |
| Arrow Flight SQL | Python 高并发读取新接口 | 不影响(新增接口) |
4.3 升级步骤
第二阶段步骤与第一阶段完全相同,只需将新版目录替换为 /opt/doris-2.1.11 对应目录即可。
⚠️ 重要提醒:FE 升级后会立即自动完成元数据格式升级(不可逆),回滚无法直接通过目录恢复,必须从备份恢复元数据。请务必确认 FE 备份已完成后,再执行 FE 升级。
4.4 第二阶段验证清单
| 验证项 | 命令/方法 | 判断标准 |
|---|---|---|
| FE 版本正确 | mysql -e “SHOW FRONTENDS;” | Version 列显示 2.1.11 |
| BE 版本正确 | mysql -e “SHOW BACKENDS;” | Version 列显示 2.1.11 |
| 集群可读写 | SELECT/INSERT/DROP 测试 | 正常执行 |
| 历史查询正常 | 历史 SQL 抽检 | 正常返回 |
| 导入任务正常 | 执行测试导入 | 成功 |
| 监控指标正常 | Grafana/Prometheus | 无异常告警 |
五、回滚方案
5.1 回滚原则
- FE 元数据升级后不可逆。一旦 FE 启动并写入新版本元数据,旧版本 FE 无法再使用该目录
- BE 可以随时回滚(停止 BE、恢复旧目录、重启即可)
- 回滚后需业务方确认数据一致性
5.2 第一阶段回滚(2.0.15 → 2.0.1.1)
# 停止所有 BE 和 FE stop_be.sh --daemon stop_fe.sh --daemon # 恢复 BE 目录 mv /path/to/be /path/to/be.2.0.15 mv /path/to/be.old.2.0.1.1 /path/to/be # 恢复 FE 目录 mv /path/to/fe /path/to/fe.2.0.15 mv /path/to/fe.old.2.0.1.1 /path/to/fe # 重启集群 start_fe.sh --daemon start_be.sh --daemon
5.3 第二阶段回滚(2.1.11 → 2.0.15)
# 停止所有节点 stop_be.sh --daemon stop_fe.sh --daemon # 从备份恢复 FE 元数据 rm -rf /path/to/fe/doris-meta cp -r /path/to/fe/meta.bak.2026XXXX /path/to/fe/doris-meta # 恢复 FE 安装目录 mv /path/to/fe /path/to/fe.2.1.11 mv /path/to/fe.old.2.0.15 /path/to/fe # 恢复 BE 安装目录 mv /path/to/be /path/to/be.2.1.11 mv /path/to/be.old.2.0.15 /path/to/be # 重启 start_fe.sh --daemon start_be.sh --daemon
5.4 回滚后数据一致性确认
# 核对各表行数 SELECT COUNT(*) FROM db.table; # 核对关键指标 SELECT SUM(col) FROM db.table; # 与业务方确认数据完整性
六、升级后优化
6.1 推荐开启的新功能
Group Commit(高并发写入场景推荐)
-- 开启 Group Commit SET enable_group_commit = true; -- 设置合并间隔(默认 10000ms) SET group_commit_interval_ms = 10000;
评估 Auto Partition(新表建议使用)
CREATE TABLE orders (
order_id BIGINT,
dt DATE,
amount DECIMAL(10,2)
) PARTITION BY RANGE (dt) (
PARTITION p_default VALUES LESS THAN ("2026-01-01")
);
七、附录
附录 A:常用命令速查
| 场景 | 命令 |
|---|---|
| 查看 FE 状态 | mysql -h fe_host -P 9030 -u root -p -e “SHOW FRONTENDS;” |
| 查看 BE 状态 | mysql -h fe_host -P 9030 -u root -p -e “SHOW BACKENDS;” |
| 查看集群信息 | mysql -h fe_host -P 9030 -u root -p -e “SHOW DORIS CLUSTER;” |
| 查看 BE 健康 | curl http://be_host:be_http_port/api/health |
| 停止 BE | stop_be.sh –daemon |
| 启动 BE | start_be.sh –daemon |
| 停止 FE | stop_fe.sh –daemon |
| 启动 FE | start_fe.sh –daemon |
| 查看 FE 日志 | tail -100 $FE_HOME/log/fe.log |
| 查看 BE 日志 | tail -100 $BE_HOME/log/be.out |
| 查看 BE 版本 | curl http://be_host:be_http_port/api/version |
附录 B:文件路径速查
| 组件 | 配置目录 | 日志目录 | 数据/元数据目录 |
|---|---|---|---|
| FE | fe/conf/ | fe/log/ | fe/doris-meta/ |
| BE | be/conf/ | be/log/ | be/storage/ |
附录 C:版本参考信息
| 版本 | 发布日期 | 主要更新 |
|---|---|---|
| 2.0.1.1 | 2023年 | 2.0 早期稳定版本(起始版本) |
| 2.0.15 | 2024年 | 2.0 系列最新版本,修复大量 Bug |
| 2.1.0 | 2024年4月 | 2.1 大版本发布,新增 Auto Partition、Group Commit 等 |
| 2.1.6 | 2024年 | 2.1 稳定版本,线上验证充分 |
| 2.1.11 | 2026年 | 2.1 最新稳定版本(目标版本) |
本文由墨墨整理,参考 Apache Doris 官方升级文档生成。