本篇目录7 节

09进阶与生态Beyond

迁移与备份

Grafana 的状态几乎都落在一个数据库里:默认内置 SQLite,生产建议外部 MySQL 或 Postgres。本文给出两种选型、备份恢复命令、实例间迁移思路与一份「别指望搬走」清单。

约 2 分钟/614 字/GRAFANA 12.X

状态都在哪里

用户、团队、仪表盘、数据源配置、告警规则与联系点等运行态数据全部存放在一个关系型数据库中;而配置态东西在别处: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 grafanapg_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 官方文档最新版本编写(以 Grafana 12.x 为基准),操作路径请以实际产品界面为准。

Beyond