Apache Doris Trash与Recover机制
一、机制原理与流程
1. Trash回收站设计
Apache Doris 的 Trash机制 通过 FE元数据回收站 和 BE物理文件回收站 双重保护,避免数据误删导致不可逆损失。其核心流程如下:
-
删除操作触发 :
用户执行
DROP TABLE/PARTITION
或TRUNCATE
时:- FE元数据 :立即移入 Catalog 回收站(保留时间由
catalog_trash_expire_second
控制,默认1天)。 - BE文件 :仍保留在原始数据目录中,未进入BE Trash ,此时可通过
RECOVER
命令直接恢复。
- FE元数据 :立即移入 Catalog 回收站(保留时间由
-
元数据过期 :
FE元数据超时(
catalog_trash_expire_second
到期)后,元数据被彻底删除,BE文件被异步移动到trash/
目录 ,进入BE回收站(保留时间由trash_file_expire_time_sec
控制,默认0即禁用)。 -
物理文件清理 :
BE后台线程根据
trash_file_expire_time_sec
定期清理过期的Trash文件,若设为0则直接删除。
2. Recover恢复机制
- FE元数据恢复 :
在catalog_trash_expire_second
有效期内,通过RECOVER DATABASE/TABLE/PARTITION
命令恢复元数据关联BE文件。 - BE文件恢复 :
若FE元数据已过期但BE文件仍存在(trash_file_expire_time_sec > 0
),需手动重建元数据(如使用meta_tool
工具)。
二、核心控制参数与关联
参数名 | 作用范围 | 默认值 | 功能说明 |
---|---|---|---|
catalog_trash_expire_second |
FE | 86400 | FE元数据回收站保留时间(秒),超时后元数据删除并触发BE文件迁移至Trash。 |
trash_file_expire_time_sec |
BE | 0(3.0+) | BE物理文件回收站保留时间(秒),设为0则禁用Trash功能,数据立即删除。 |
storage_high_watermark_usage_percent |
FE | 85% | 磁盘使用率高水位阈值,超时禁止副本均衡等操作。 |
storage_flood_stage_usage_percent |
FE | 95% | 磁盘危险水位阈值,超时禁止导入和Compaction。 |
关键联动逻辑:
- 恢复窗口重叠 :若
catalog_trash_expire_second < trash_file_expire_time_sec
,可能出现 FE元数据已删除但BE文件仍存在,需手动恢复。 - 清理命令差异 :
ADMIN CLEAN TRASH
仅清理FE元数据 ,BE文件需依赖trash_file_expire_time_sec
或手动删除。
三、日常运维指南
1. 空间监控与清理
-
监控命令 :
SHOW BACKENDS
查看TrashUsedCapacity
字段,实时掌握BE回收站空间。 -
紧急清理策略:
- 临时禁用BE回收站:
trash_file_expire_time_sec=0
并重启BE。 - 手动删除
trash/
目录文件(需谨慎)。
- 临时禁用BE回收站:
2. 参数调优建议
- 生产环境配置 :
启用BE Trash(如trash_file_expire_time_sec=86400
)并与catalog_trash_expire_second
保持相同时间窗口。 - 高并发场景 :
结合storage_high_watermark_usage_percent
调整水位阈值(如设为80%),提前预防磁盘写满风险。
3. 恢复操作规范
-
误删恢复流程:
- 检查FE元数据状态:
SHOW CATALOG RECYCLE BIN
。 - 执行
RECOVER
命令恢复元数据并关联BE文件。 - 若元数据丢失,通过BE日志定位文件并手动重建。
- 检查FE元数据状态:
四、常见问题排查与解决方案
1. 磁盘空间写满
-
现象 :
TrashUsedCapacity
过高,BE进程因磁盘满宕机。 -
解决步骤:
- 临时清理:删除
log/
、snapshot/
、trash/
目录非核心文件。 - 参数调整:禁用BE Trash并重启。
- 紧急扩容:新增BE节点触发数据均衡。
- 临时清理:删除
2. Trash文件未自动清理
-
原因:BE后台清理线程延迟或参数冲突。
-
排查方法:
- 检查BE日志:
grep "clean trash" be.INFO
。 - 验证参数:确认
trash_file_expire_time_sec
是否生效。
- 检查BE日志:
3. 恢复失败场景
- 元数据与文件不匹配 :
使用ADMIN DIAGNOSE TABLET <tablet_id>
检查副本状态,手动修复或重建元数据。 - 文件损坏 :
通过meta_tool
工具验证文件完整性,或从备份恢复。
五、总结与最佳实践
- 参数联动 :确保
catalog_trash_expire_second
≤trash_file_expire_time_sec
,避免恢复窗口错位。 - 监控告警 :结合
SHOW BACKENDS
和Prometheus监控,实时跟踪磁盘使用率。 - 版本适配:Doris 3.0+默认禁用BE Trash,需显式配置以保障数据安全。
通过合理配置Trash与Recover机制,Doris能够在保障数据安全性的同时,实现高效的磁盘资源管理。建议定期执行 ADMIN CLEAN TRASH
并配合自动化运维工具,构建稳定可靠的数据分析平台。