对于个人测试或小规模单用户场景,SQLite 足够够用;但如果是生产环境或多用户协作,官方建议切换到 PostgreSQL 以避免文件锁竞争。
先说结论:SQLite 是文件型数据库,高并发写入时容易锁表;PostgreSQL 是客户端 - 服务器架构,更适合多用户生产环境。
- 适合场景:生产环境、多用户协作、需要高可用架构的场景
- 核心风险:直接修改配置而不迁移数据会导致所有仪表板、用户和告警规则丢失
- 操作前提:完整备份 SQLite 文件,安装并初始化 PostgreSQL 服务,导出关键配置
- 验证标准:Grafana 日志无数据库连接错误,PostgreSQL 中存在对应数据表,界面保存操作无延迟
核心配置修改
核心修改在于 Grafana 配置文件 grafana.ini 中的数据库连接部分。注意 host 和 port 需分开填写,合并可能导致解析错误。
[database]
type = postgres
host = 127.0.0.1
port = 5432
name = grafana
user = grafana
password = 你的强密码
ssl_mode = disable修改后需重启 Grafana 服务生效:
sudo systemctl restart grafana-server数据迁移与完整性保障
重要提示:Grafana 官方未提供内置的 SQLite 到 PostgreSQL 一键迁移命令。直接切换配置会初始化空数据库,导致原有数据丢失。请按以下流程操作:
1. 备份现有数据
在操作前务必备份当前的 SQLite 文件(通常位于 /var/lib/grafana/grafana.db),以防迁移失败可回滚:
sudo cp /var/lib/grafana/grafana.db /var/lib/grafana/grafana.db.bak2. 导出仪表板与数据源
由于缺乏官方迁移工具,最稳妥的方式是通过 Web 界面或 API 导出配置:
- 仪表板:进入 Dashboard 列表,逐个点击 Export 保存为 JSON 文件,或使用社区工具批量导出。
- 数据源:记录现有数据源配置信息(URL、认证方式等),切换后需重新添加。
- 用户与权限:官方不支持直接迁移用户表,建议在 PostgreSQL 初始化后重新创建或对接 LDAP/OAuth。
3. 安装并配置 PostgreSQL
使用系统包管理器安装 PostgreSQL,创建专用数据库和用户。注意不要使用 root 用户连接:
sudo -u postgres psql
CREATE DATABASE grafana;
CREATE USER grafana WITH PASSWORD '你的强密码';
GRANT ALL PRIVILEGES ON DATABASE grafana TO grafana;
\q4. 切换配置并启动
编辑 /etc/grafana/grafana.ini,找到 [database] 部分,按“核心配置修改”中的内容修改。确保 type 改为 postgres 并填写正确的连接信息。
5. 导入配置
服务启动成功后,登录 Web 界面,使用 Import 功能上传之前导出的仪表板 JSON 文件,并重新配置数据源。
验证步骤与完整性检查
1. 检查服务状态
查看 Grafana 服务是否正常运行,无重启循环:
sudo systemctl status grafana-server2. 查看日志
观察日志文件(通常位于 /var/log/grafana/grafana.log),确认没有数据库连接拒绝或锁超时的错误:
sudo tail -f /var/log/grafana/grafana.log3. 数据库完整性校验
登录 PostgreSQL 检查 Grafana 是否成功建表并写入数据。执行以下 SQL 查询表数量:
psql -h 127.0.0.1 -U grafana -d grafana -c "SELECT count(*) FROM dashboard;"
psql -h 127.0.0.1 -U grafana -d grafana -c "SELECT count(*) FROM data_source;"如果返回行数大于 0(导入后),说明数据写入正常。
4. 功能测试
登录 Web 界面,尝试保存一个仪表板。如果是多用户环境,可让两个账号同时编辑不同仪表板,观察是否出现保存冲突或延迟。
常见故障排查
1. 连接字符串格式错误
PostgreSQL 的 host 配置不应包含端口号。若配置为 127.0.0.1:5432 可能导致连接失败,请确保 host 与 port 分开填写。
2. 密码特殊字符
数据库密码若包含特殊字符(如 @、#、:),在配置文件中可能需要转义,否则会导致解析错误。建议初期使用纯字母数字密码测试连通性。
3. SELinux 限制
在 CentOS/RHEL 等开启 SELinux 的系统上,Grafana 可能无法连接网络数据库。需检查 SELinux 日志或临时设置为宽容模式排查:
setenforce 04. 文件权限问题
确保 Grafana 运行用户(通常为 grafana)对配置文件有读取权限,且 PostgreSQL 的 pg_hba.conf 允许本地连接。
参考来源
- Grafana 官方文档 - Configure Grafana: https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/
- Grafana 官方文档 - Database configuration: https://grafana.com/docs/grafana/latest/setup-grafana/configure-database/