一、问题现象
在 StarRocks 3.3.4 集群中,对一个仅 34MB 的小表执行 OSS 备份时,任务 永久卡在 SNAPSHOTING 状态 ,超过 1 小时 无法进入 UPLOADING 。
备份任务状态(一直不变)
sql
sql
StarRocks > SHOW BACKUP FROM ad_network\G;
*************************** 1. row ***************************
JobId: 23376048
SnapshotName: bak_test_click_task_v2
DbName: ad_network
State: SNAPSHOTING
BackupObjs: [ad_network.click_task]
CreateTime: 2026-06-02 10:12:01
SnapshotFinishedTime: NULL
UploadFinishedTime: NULL
FinishedTime: NULL
UnfinishedTasks: 11960465=10004, 11960453=10004, 11960449=10004, 11960461=10004, 11960457=10004, 11960445=10004
Progress:
TaskErrMsg:
Status: [OK]
Timeout: 86400
BE 日志特征(关键证据)
BE 日志中持续打印以下内容,但 tablet 数量从不减少 :
纯文本
纯文本
waiting 6 tablets to make snapshot.
BACKUP repo id: 23349323, label: bak_test_click_task_v2
state: SNAPSHOTING
status: [OK]
二、环境信息
集群拓扑(关键背景)
| 项目 | 状态 |
|---|---|
| StarRocks 版本 | 3.3.4-56bcf6f |
| 当前 BE 数量 | 1 个(单机) |
| BE ID | 10002 |
| 历史状态 | 半年前由 3 节点缩容为 1 节点 |
| 数据总量 | 约 2.2 TB |
| 表数量 | 约 14 张 OLAP 表 |
当前 BE 状态
sql
sql
StarRocks > SHOW BACKENDS\G;
*************************** 1. row ***************************
BackendId: 10002
IP: 192.168.0.170
Alive: true
LastHeartbeat: 2026-06-02 11:05:16
TabletNum: 16741
ErrMsg:
Version: 3.3.4-56bcf6f
写入状态(已排除写入干扰)
所有 Routine Load 均为 PAUSED 状态
备份期间无任何 Kafka 写入
三、已尝试的排查手段(均无效)
| 操作 | 结果 |
|---|---|
多次 CANCEL BACKUP
|
仍卡住 |
| 重启 FE / BE |
仍卡住 |
| 更换快照名重新备份 |
仍卡住 |
| 暂停所有 Routine Load |
仍卡住 |
| 等待超过 1 小时 |
仍卡住 |
四、核心疑点(怀疑与缩容残留有关)
UnfinishedTasks 中的节点 ID 异常
纯文本
纯文本
11960465=10004
-
当前 唯一存活 BE 的 ID 是
10002 -
但 UnfinishedTasks 中出现的 ID 是
10004 -
该 ID 在
SHOW BACKENDS中并不存在
怀疑 :
这是 半年前 3 节点时期遗留的副本元数据 ,导致快照任务一直在等待一个 不存在的 BE ,从而永久阻塞。
单机环境下 Tablet 版本无法稳定
在单机 + 大量 Tablet(16741)场景下:
-
某些 Tablet 的 版本链可能未正确收敛
-
快照任务在等待
version stable,但永远等不到
五、诉求(希望社区协助)
- 请确认:
UnfinishedTasks 中出现不存在的 BE ID(10004),是否是已知 Bug?
- 在 3.3.4 单机 + 缩容历史 场景下,是否存在:
-
Tablet 元数据残留
-
副本状态不一致
-
快照任务无法跳过失效副本
- 是否有 安全的人工修复手段 (如强制标记 Tablet 健康、清理残留副本)
六、附件(请补充)
如果你方便,可以把以下日志打包上传到 ISSUE:
-
fe/log/fe.log(备份开始前后 10 分钟) -
be/log/be.INFO(包含make_snapshot/waiting tablets的部分) -
SHOW TABLET FROM click_task;的输出
七、使用场景说明(帮助社区理解优先级)
我们正在做 华为云 → 阿里云 跨云迁移
使用 OSS 作为中间存储
当前因备份卡住,导致整个迁移计划阻塞
你可以直接复制以上内容发到 StarRocks 社区 / GitHub Issues
如果你愿意,我也可以帮你把 SHOW TABLET FROM click_task 的结果 一起整理进去,让工单更完整。
仍卡住