QuestDB突然无法写入数据,只能读取


问题现象

  • 环境:QuestDB数据库运行于Windows系统
  • 触发场景:电脑直接断电后重新开机
  • 表现症状:
    • 数据库可以正常读取数据
    • 所有写入操作失败
    • 日志中可能出现database locked或写权限相关错误

临时解决方案

原文链接:https://questdb.com/docs/reference/sql/alter-table-set-type/

  1. 关闭表的WAL(Write-Ahead Logging):
    ALTER TABLE weather SET TYPE BYPASS WAL;
  2. 重启QuestDB服务
  3. 重新开启WAL:
    ALTER TABLE weather SET TYPE WAL;
  4. 再次重启服务

永久解决方案

修改QuestDB配置文件server.conf

# 文件路径:\questdb\bin\qdbroot\conf\server.conf
cairo.commit.mode=sync

📌 修改后需重启服务生效

问题根本原因

  1. 异常断电导致
    • 未能正常执行数据库关闭流程
    • .lock文件残留导致自我保护
  2. WAL机制冲突
    • 断电时正在进行的事务未能完整提交
  3. 默认配置风险
    • 默认async提交模式在断电时更易出错

运维建议

为服务器配置UPS电源,设置ups没电自动正常关机

参考

https://github.com/questdb/questdb/issues/3372
[加速]https://github.com/questdb/questdb/issues/3372


文章作者: Young
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Young !
评论
  目录