目录

Apache Doris Trash与Recover机制

Apache Doris Trash与Recover机制


一、机制原理与流程

1. Trash回收站设计

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

  1. 删除操作触发

    用户执行 DROP TABLE/PARTITIONTRUNCATE 时:

    • 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_secondtrash_file_expire_time_sec,避免恢复窗口错位。
  • 监控告警 :结合 SHOW BACKENDS 和Prometheus监控,实时跟踪磁盘使用率。
  • 版本适配:Doris 3.0+默认禁用BE Trash,需显式配置以保障数据安全。

通过合理配置Trash与Recover机制,Doris能够在保障数据安全性的同时,实现高效的磁盘资源管理。建议定期执行 ADMIN CLEAN TRASH 并配合自动化运维工具,构建稳定可靠的数据分析平台。

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
五行星辰13 分钟前
Spring定时任务修仙指南:从@Scheduled到分布式调度的终极奥义
java·后端·spring
东方窅瞳22 分钟前
Bash语言的哈希表
开发语言·后端·golang
s9123601011 小时前
Rust Command无法执行*拓展解决办法
开发语言·后端·rust
考虑考虑1 小时前
使用Jpa自带的级联注解造成死循环问题
java·后端·java ee
写bug写bug1 小时前
Java并发编程:理解进程和线程
java·后端
索码理2 小时前
初探MCP:对Excel操作不熟练?不怕,MCP来帮你
人工智能·后端·mcp
IT杨秀才2 小时前
Go语言单元测试指南
后端·单元测试·go
陆通2 小时前
MCP大模型协议:让AI与世界无缝对话的"万能翻译官"
后端
bobz9652 小时前
LXC LXD vs KVM
后端
快乐源泉2 小时前
【设计模式】已有工厂模式,抽象工厂改进了哪些?
后端·设计模式