Grafana Error database is locked
🥚 问题描述
公司内有多套Prometheus+Grafana环境,只有核心业务环境中出现了failed to build query 'A': [sqlstore.max-retries-reached] retry 1: database is locked的问题。并且其他环境中的Grafana版本比该环境的版本低,从未出现过该问题。
该问题时不时就会出现并且过段时间自己就会恢复,只是在触发时会将告警发出来,比较烦人。
出现 database is locked问题的环境信息如下:
- grafana版本:Grafana v9.5.2 (cfcea75916)
- 操作系统:Red Hat Enterprise Linux Server 7.6 (Maipo)
🍆 问题现象
告警群内的现象
Grafana日志
1520 logger=sqlstore.transactions rule_uid=d25f891d-485d-46b1-a2c1-a228f9707e08 org_id=1 t=2023-11-07T10:57:13.506604076+08:00 level=info msg="Database l ocked, sleeping then retrying" error="database is locked" retry=1 code="database is locked"
1521 logger=ngalert.scheduler rule_uid=d25f891d-485d-46b1-a2c1-a228f9707e08 org_id=1 version=14 fingerprint=1b5605477d584793 attempt=0 now=2023-11-07T10: 57:00+08:00 t=2023-11-07T10:57:13.506673168+08:00 level=error msg="Failed to build rule evaluator" error="failed to build query 'A': [sqlstore.max-r etries-reached] retry 1: database is locked"
🏰 尝试解决
参考文档:
🌍 Grafana 日志“数据库已锁定” ·期刊 #16638 ·格拉法纳/格拉法纳 (github.com)
🌎 SQLite:使用日志模式 WAL ·期刊 #17912 ·格拉法纳/格拉法纳 (github.com)
🌏 sqlstore.max-retries-reached] 重试 1:数据库已锁定 ·期刊 #73018 ·格拉法纳/格拉法纳 (github.com)
🐘 并不是版本的问题,该文容易误导人Database is locked - Grafana / Configuration - Grafana Labs Community Forums
参考marefr的评论:SQLite:使用日志模式 WAL ·期刊 #17912 ·格拉法纳/格拉法纳 (github.com)
要以日志模式 WAL 运行 SQLite,您当前需要使用数据库设置:
connection_string
[database] type=sqlite3 connection_string=file:data/grafana.db?cache=private&mode=rwc&_journal_mode=WAL
我遇到了和lafrech一样的问题:无法启动Grafana。
我只是尝试过,但遇到了同样的错误。关于创建数据库的错误消息使我认为connection_string没有正确解释,并且 grafana 找不到我的 grafana.db。
这可能特定于我的设置,我不想为这个问题发送更多噪音。然而,我有点被困住了,因为我找不到更多关于connection_string的信息。
因此,我建议继续使用 #17912。它很旧,但从那时起情况似乎没有改变,修复并不简单。至少对我来说还不够。
最后选择直接修改splite3中的配置
sqlite3 grafana.db 'pragma journal_mode=wal;'
完整过程如下
cd /var/lib/grafana/
du -sh grafana.db
cp grafana.db grafana.db_bak
systemctl stop grafana-server.service
sqlite3 grafana.db 'pragma journal_mode=wal;'
systemctl start grafana-server.service
systemctl status grafana-server.service
🌲 后续步骤
我不确定是否已经解决问题,后续我将观察一段时间并以评论的形式反馈在该博客下。