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

相关推荐
蓝倾1 小时前
如何使用Python通过API接口批量抓取小红书笔记评论?
前端·后端·api
aloha_1 小时前
Flowable 引擎在启动时没办法找到AsyncListenableTaskExecutor类型的 bean
后端
保持学习ing2 小时前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
超级小忍2 小时前
服务端向客户端主动推送数据的几种方法(Spring Boot 环境)
java·spring boot·后端
字节跳跃者2 小时前
为什么Java已经不推荐使用Stack了?
javascript·后端
字节跳跃者2 小时前
深入剖析HashMap:理解Hash、底层实现与扩容机制
javascript·后端
程序无bug2 小时前
Spring IoC注解式开发无敌详细(细节丰富)
java·后端
程序无bug2 小时前
Spring 对于事务上的应用的详细说明
java·后端
食亨技术团队2 小时前
被忽略的 SAAS 生命线:操作日志有多重要
java·后端
程序员NEO2 小时前
精控Spring AI日志
人工智能·后端