You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

磁盘空间不足致QuestDB停写,扩容后如何恢复数据写入?

磁盘耗尽后QuestDB数据写入恢复步骤

针对你遇到的QuestDB v7.3.4磁盘满扩容后WAL显示写入但查询无结果的问题,可按以下步骤排查恢复:

1. 确认WAL回放进度

  • 查看QuestDB主日志,寻找WalReader finished applying WAL类的日志,确认是否存在未完成的WAL回放。磁盘耗尽可能导致WAL回放中断,即便新数据在写入,旧的未回放数据还未同步到表存储。
  • 同时检查日志中是否有corrupted WAL segment等损坏提示,这类错误会导致WAL数据无法正常回放。

2. 验证表分区状态

  • 执行SQL查询分区状态:
    SELECT * FROM trades PARTITIONS;
    
  • 重点关注故障时间附近的分区,若分区处于RO(只读)状态,大概率是磁盘满时分区文件写入异常。处理方式:
    1. 停止QuestDB服务
    2. 进入表分区目录(默认路径为{QuestDB数据根目录}/trades)
    3. 删除后缀为.tmp的临时损坏文件
    4. 重启QuestDB服务

3. 强制刷新WAL到表存储

  • 执行SQL命令强制同步WAL数据到表文件:
    ALTER TABLE trades FLUSH WAL;
    
  • 等待1-2分钟后,重新执行查询语句验证:
    select * from trades where timestamp >= '2023-11-15T14:06:31.593232';
    

4. 检查WAL目录完整性

  • 定位日志中提到的WAL段路径(默认{QuestDB数据根目录}/wal/trades_rt~5/wal13388/0),检查该文件是否存在且大小合理。
  • 若确认WAL段损坏,可删除该段文件(注意:此操作会丢失该段内的数据,仅在无法修复时执行),随后重启QuestDB让系统重新同步。

5. 确认磁盘权限

  • 扩容磁盘后可能导致目录权限变更,确保QuestDB运行用户对数据根目录及所有子目录拥有读写权限,例如:
    chown -R questdb:questdb /path/to/questdb/data
    

内容的提问来源于stack exchange,提问作者Nick The Greek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:43:14