状态都在哪里
用户、团队、仪表盘、数据源配置、告警规则与联系点等运行态数据全部存放在一个关系型数据库中;而配置态东西在别处:grafana.ini 与环境变量、Provisioning 文件、插件目录。备份迁移要做的是把两类东西分别搬齐。
内置 SQLite 还是外部数据库
| 维度 | SQLite(默认) | MySQL / PostgreSQL |
|---|---|---|
| 形态 | 单文件 data/grafana.db,零运维 |
独立服务,需要连接配置 |
| 并发写入 | 弱,多实例共享会锁死 | 强,多实例水平扩展的前提 |
| 适用 | 单机试用、笔记本、轻量容器 | 生产、Kubernetes、高可用部署 |
| 位置 | [database] path |
[database] host/name/user |
# 切到 Postgres 的最小配置
[database]
type = postgres
host = 127.0.0.1:5432
name = grafana
user = grafana
password = ...
grafana-cli 日常管理
CLI 除插件外还提供账号急救:
# 忘记 admin 密码时,在服务器本机重置
grafana-cli admin reset-admin-password 'NewPassw0rd!'
# 查看版本与帮助
grafana-cli --version
备份与恢复
SQLite:最可靠的方式是先停服务再整库复制——运行中直接 cp 可能拿到半写状态的文件。
systemctl stop grafana-server
sqlite3 /var/lib/grafana/grafana.db ".backup '/backup/grafana-$(date +%F).db'"
tar czf grafana-backup.tar.gz -C /var/lib/grafana grafana.db conf/ provisioning/ plugins/
systemctl start grafana-server
MySQL / Postgres:交给数据库自己的工具链,mysqldump grafana 或 pg_dump grafana,与其余业务库同策略管理。恢复即反向导入,再启动 Grafana。
注意: 数据源里的密码与 Token 用
[security]的加密密钥落库。跨机器恢复时若密钥不一致,这些密文全部失效,需要在界面重新录入凭据——把密钥文件与备份一起保管是必修课。
实例间迁移
- 同引擎搬迁:备份恢复即可;新旧版本不一致时,先让目标实例跑低版本,升级动作放在数据落地之后(见升级与回滚)。
- SQLite ↔ MySQL/Postgres 互转:没有官方一键工具,社区做法是导出导入加字段适配,务必先在测试库演练。
- Kubernetes / Helm 场景:Grafana 进程本身可换回「无状态」——仪表盘、数据源、告警全部走 Provisioning 文件进 Git,Helm values 管配置,迁移只是把 Chart 部署到新集群;仍有界面创建的对象时,为数据库 PVC 做快照或外挂 Postgres 备份。
- 上云到 Grafana Cloud:官方提供迁移 CLI(grafana-migrate),方向是本地 → Cloud,反向不受官方支持。
不迁移清单
以下东西不在 Grafana 数据库里,别指望搬库带过去:
- Provisioning 文件管理的仪表盘/数据源/告警(改了也是文件赢);
- 插件二进制目录与许可配置;
- LDAP、OAuth、
[auth]系列设置(全在 ini/环境变量); - k6、外部 Alertmanager、Loki/Prometheus 等周边组件自身的状态——搬 Grafana 不搬它们;
- 加密密钥与
secret_key(上一节已述)。
下一步
- 配置文件全貌,读配置文件 grafana.ini。
- 配置即代码的迁移路线,看Provisioning:配置即代码。
- 用 API 批量导出仪表盘,见HTTP API 与自动化。