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 并配合自动化运维工具,构建稳定可靠的数据分析平台。

相关推荐
bobz9651 小时前
5070 Ti CodeLlama 7B > Mistral 7B > Qwen3 8B
后端
麦兜*1 小时前
Spring Boot 集成 Docker 构建与发版完整指南
java·spring boot·后端·spring·docker·系统架构·springcloud
程序视点2 小时前
2025最佳图片无损放大工具推荐:realesrgan-gui评测与下载指南
前端·后端
fured3 小时前
[调试][实现][原理]用Golang实现建议断点调试器
开发语言·后端·golang
bobz9654 小时前
linux cpu CFS 调度器有使用 令牌桶么?
后端
bobz9654 小时前
linux CGROUP CPU 限制有使用令牌桶么?
后端
David爱编程5 小时前
多核 CPU 下的缓存一致性问题:隐藏的性能陷阱与解决方案
java·后端
追逐时光者5 小时前
一款基于 .NET 开源、功能全面的微信小程序商城系统
后端·.net
绝无仅有6 小时前
Go 并发同步原语:sync.Mutex、sync.RWMutex 和 sync.Once
后端·面试·github
绝无仅有6 小时前
Go Vendor 和 Go Modules:管理和扩展依赖的最佳实践
后端·面试·github