Apache Doris Trash与Recover机制

Apache Doris Trash与Recover机制


​一、机制原理与流程

​1. Trash回收站设计

Apache Doris 的 ​Trash机制 通过 ​FE元数据回收站 和 ​BE物理文件回收站 双重保护,避免数据误删导致不可逆损失。其核心流程如下:

  1. ​删除操作触发 :

    用户执行 DROP TABLE/PARTITION 或 TRUNCATE 时:

    • FE元数据 :立即移入 Catalog 回收站(保留时间由 catalog_trash_expire_second 控制,默认1天)。
    • BE文件 :仍保留在原始数据目录中,未进入BE Trash ,此时可通过 RECOVER 命令直接恢复。
  2. ​元数据过期 :

    FE元数据超时(catalog_trash_expire_second 到期)后,元数据被彻底删除,​BE文件被异步移动到 trash/ 目录 ,进入BE回收站(保留时间由 trash_file_expire_time_sec 控制,默认0即禁用)。

  3. ​物理文件清理 :

    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/ 目录文件(需谨慎)。
​2. 参数调优建议
  • 生产环境配置 :
    启用BE Trash(如 trash_file_expire_time_sec=86400)并与 catalog_trash_expire_second 保持相同时间窗口。
  • 高并发场景 :
    结合 storage_high_watermark_usage_percent 调整水位阈值(如设为80%),提前预防磁盘写满风险。
​3. 恢复操作规范
  • ​误删恢复流程:

    1. 检查FE元数据状态:SHOW CATALOG RECYCLE BIN。
    2. 执行 RECOVER 命令恢复元数据并关联BE文件。
    3. 若元数据丢失,通过BE日志定位文件并手动重建。

​四、常见问题排查与解决方案

​1. 磁盘空间写满
  • ​现象 :TrashUsedCapacity 过高,BE进程因磁盘满宕机。

  • ​解决步骤:

    1. 临时清理:删除 log/、snapshot/、trash/ 目录非核心文件。
    2. 参数调整:禁用BE Trash并重启。
    3. 紧急扩容:新增BE节点触发数据均衡。
​2. Trash文件未自动清理
  • ​原因:BE后台清理线程延迟或参数冲突。

  • ​排查方法:

    1. 检查BE日志:grep "clean trash" be.INFO。
    2. 验证参数:确认 trash_file_expire_time_sec 是否生效。
​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 并配合自动化运维工具,构建稳定可靠的数据分析平台。

相关推荐
考虑考虑1 小时前
Posrgresql恢复.backup文件
数据库·后端·postgresql
无奈何杨1 小时前
风控决策系统决策流,策略模式,权重、顺序、投票、最坏
后端
Patrick_Wilson3 小时前
Go 为什么需要 defer?从函数怎么收尾说起
后端·go·编程语言
苏三说技术3 小时前
DeepSeek Harness入驻B站,评论区被干成了大型插件集市!
后端
橙序员小站3 小时前
我一句话让 AI 把公众号工作台搭完了:部署实测记录
后端
Patrick_Wilson3 小时前
从文本输出理解 Go 方法与接口
后端·go·编程语言
QCoding4 小时前
企业级Agent Evaluation实战:Agent能跑就能上线?AI Agent到底怎么测?
后端·spring
苍何4 小时前
让 WorkBuddy 操控浏览器,干活有点猛啊1
后端
IT_陈寒5 小时前
当Java的hashCode遇上Lombok,我的缓存被全清了
前端·人工智能·后端
XW5 小时前
常用提示词(Prompt)框架总结
后端