当前位置: 首页 > news >正文

Grafana 操作进阶:生产级平滑升级与数据备份

生产环境必备技能:安全升级不停摆,数据备份保无忧

📌Grafana 的升级原则:先备份、小版本递进、测试环境验证、生产环境快速切换。

一、为什么要关注平滑升级与备份?

Grafana 官方建议“经常升级以获得最新的修复和增强功能”。跨版本升级时,Grafana 会在启动时自动迁移数据库 schema(如果有新增或变更的表)。

但这并不意味着升级是完全无风险的:

  • 跨大版本(如 7.x → 10.x)可能存在视图不兼容的问题

  • 插件版本可能跟不上主程序版本,导致加载失败

  • 自定义配置可能在升级过程中被覆盖

因此,“平滑”的本质是:升级前有完整的备份,升级过程中有预案,升级失败后可以快速回滚。

二、升级前的核心备份:三件套

Grafana 的数据和配置散落在三个关键位置。在动手升级之前,必须先完成以下备份。

2.1 配置文件备份

核心配置文件路径为 /etc/grafana/grafana.ini(deb/rpm 安装)或 $WORKING_DIR/conf/custom.ini(二进制安装)。

此外,如果你配置了 Provisioning(数据源/仪表盘的声明式配置),还需要备份 /etc/grafana/provisioning/ 整个目录。

# 备份核心配置文件
sudo cp /etc/grafana/grafana.ini /backup/grafana/grafana.ini.bak# 备份 provisioning 目录(如适用)
sudo tar -czvf /backup/grafana/provisioning.tar.gz /etc/grafana/provisioning/

2.2 数据库备份(最关键的一步)

Grafana 的默认数据库是 SQLite,所有仪表盘、用户、组织等元数据都存储在一个文件中。该文件通常位于 /var/lib/grafana/grafana.db(deb/rpm 安装)或 <grafana_install_dir>/data(二进制安装)。

为确保数据一致性,备份 SQLite 数据库前建议先停止 Grafana 服务

sudo systemctl stop grafana-server
sudo cp /var/lib/grafana/grafana.db /backup/grafana/grafana.db.bak
sudo systemctl start grafana-server

如果使用 MySQLPostgreSQL 作为后端数据库,备份命令略有不同:

# MySQL / MariaDB
mysqldump -u root -p[password] grafana > /backup/grafana_backup.sql# PostgreSQL
pg_dump grafana > /backup/grafana_backup.sql

2.3 插件备份

已安装的插件存放在 /var/lib/grafana/plugins(deb/rpm 安装)或 $WORKING_DIR/data/plugins(二进制安装)。可以整体打包备份:

sudo tar -czvf /backup/grafana/plugins_backup.tar.gz /var/lib/grafana/plugins/

备份的插件不仅能在回滚时恢复原样,也能在新版本中检测哪些需要升级。

2.4 自动化备份脚本(推荐)

将以下脚本保存为 /usr/local/bin/grafana-backup.sh 并赋予执行权限:

#!/bin/bash
BACKUP_DIR="/backup/grafana"
DATE=$(date +%Y%m%d)mkdir -p $BACKUP_DIR# 备份数据库(SQLite 示例)
cp /var/lib/grafana/grafana.db $BACKUP_DIR/grafana.db.bak.$DATE# 备份配置文件
tar czf $BACKUP_DIR/grafana-config-$DATE.tar.gz /etc/grafana# 备份插件
tar czf $BACKUP_DIR/grafana-plugins-$DATE.tar.gz /var/lib/grafana/plugins# 删除 7 天前的备份
find $BACKUP_DIR -type f -mtime +7 -deleteecho "Grafana 备份完成:$BACKUP_DIR"

添加到 crontab 实现每日自动备份:

0 0 * * * /usr/local/bin/grafana-backup.sh

三、平滑升级实操

下面根据不同的安装方式,分别给出升级命令。

3.1 从 APT 仓库升级(Ubuntu / Debian)

sudo apt-get update
sudo apt-get upgrade

或只升级 Grafana:

sudo apt-get install --only-upgrade grafana

3.2 从 YUM 仓库升级(CentOS / RHEL)

sudo yum update grafana

或升级所有软件包:

sudo yum update

3.3 从 Debian / RPM 包升级

下载新版 .deb.rpm 包后执行:

# Debian
sudo dpkg -i grafana_<新版本>_amd64.deb# RPM
sudo yum localinstall grafana_<新版本>.rpm   # 或 rpm -Uvh

3.4 从二进制包升级(tar.gz)

最佳实践:将自定义配置放在 <grafana_install_dir>/conf/custom.ini 中,这样升级时直接解压覆盖,不会丢失配置。

# 1. 备份安装目录和数据
cp -r /usr/local/grafana /usr/local/grafana.bak.$(date +%Y%m%d)
cp -r /var/lib/grafana /var/lib/grafana.bak.$(date +%Y%m%d)# 2. 下载新版本
wget https://dl.grafana.com/oss/release/grafana-13.1.0.linux-amd64.tar.gz# 3. 停止服务
sudo systemctl stop grafana-server# 4. 替换程序文件
tar -zxf grafana-13.1.0.linux-amd64.tar.gz -C /usr/local/
rm -rf /usr/local/grafana
mv /usr/local/grafana-13.1.0 /usr/local/grafana# 5. 恢复配置文件(不要覆盖新版本的 defaults.ini)
cp /usr/local/grafana.bak/conf/custom.ini /usr/local/grafana/conf/# 6. 修复权限
chown -R grafana:grafana /usr/local/grafana /var/lib/grafana# 7. 启动服务
sudo systemctl start grafana-server# 8. 验证
sudo systemctl status grafana-server
grafana-server -v

3.5 升级后的版本检查

grafana-cli --version

或通过 Web 界面:左下角 Help → About 查看版本号。

四、数据库自动迁移与版本兼容性

Grafana 升级后首次启动时,会自动迁移数据库 schema。这意味着在新版本中访问仪表盘之前,数据库结构已经完成了更新。

这一过程通常是平滑且不可见的。但在以下情况需要额外关注:

  • 跨越多版本(如 6.x → 10.x):建议分步升级,先升级到中间版本(如 8.x 再升级到 10.x),避免一次跨度太大。

  • 回滚时需谨慎:如果升级后发现问题想要降级,数据库 schema 可能已经变更,低版本无法识别新结构。此时必须使用升级前的备份数据库来恢复。这也是强调升级前务必备份的核心原因。

⚠️ 关键提示:升级后如果发现问题,不要直接尝试降级。正确的做法是用备份文件恢复到升级前的状态,而不是依赖“低版本覆盖高版本”。

五、升级后插件兼容性处理

这是生产环境升级中最容易被忽视的问题。

5.1 为什么插件会不兼容?

每个 Grafana 插件的 plugin.json 中都定义了 grafanaDependency 字段,声明支持的 Grafana 版本范围。升级主程序后,如果当前版本超出了插件声明的支持范围,系统会标记该插件为 incompatible

5.2 检查兼容性

升级后登录 Grafana Web 界面,进入 Configuration → Plugins,查看是否有插件显示红色警告或 “Incompatible” 标签。

也可以在日志中查找错误:

sudo journalctl -u grafana-server | grep incompatible

5.3 处理方案

方案一:升级插件到最新版(推荐)

# 查看已安装插件
grafana-cli plugins list# 更新指定插件
grafana-cli plugins update <plugin-id># 批量更新所有插件
grafana-cli plugins update-all# 重启服务
sudo systemctl restart grafana-server

方案二:手动修改插件依赖范围(临时方案,适用于私有插件)

找到插件的安装目录(如 /var/lib/grafana/plugins/<plugin-id>),编辑 plugin.json,修改 grafanaDependency 字段:

// 修改前
"grafanaDependency": "^8.0.0"// 修改后(支持多个版本)
"grafanaDependency": "^8.0.0 || ^9.0.0 || ^10.0.0"

修改后重启 Grafana 服务。注意这只是临时规避,后续仍需跟进代码兼容性测试。

六、降级与回滚操作

如果升级后发现了无法解决的问题,回滚到旧版本是最稳妥的选择。但前提是升级前做好了完整备份

6.1 降级步骤(以 apt 为例)

# 停止服务
sudo systemctl stop grafana-server# 卸载当前版本
sudo apt-get remove grafana# 查看可用旧版本
apt-cache policy grafana# 安装指定旧版本
sudo apt-get install grafana=7.5.11# 恢复配置文件
sudo cp /backup/grafana/grafana.ini.bak /etc/grafana/grafana.ini# 恢复数据库
sudo cp /backup/grafana/grafana.db.bak /var/lib/grafana/grafana.db
sudo chown grafana:grafana /var/lib/grafana/grafana.db# 恢复插件
sudo tar -xzvf /backup/grafana/plugins_backup.tar.gz -C /# 启动服务
sudo systemctl start grafana-server

6.2 完整灾难恢复(从零重建)

如果整个 Grafana 服务需要迁移或从零重建,请按以下顺序操作:

  1. 安装与旧版本相同版本的 Grafana(不要直接装新版)

  2. 停止服务:sudo systemctl stop grafana-server

  3. 恢复配置文件(grafana.iniprovisioning/ 目录)

  4. 恢复数据库文件(grafana.db),并确保文件属主为 grafana:grafana

  5. 恢复插件目录(/var/lib/grafana/plugins/

  6. 启动服务:sudo systemctl start grafana-server

  7. 验证仪表盘和数据源是否正常

针对不同数据库的恢复命令

# SQLite
cp /backup/grafana.db.bak.20260524 /var/lib/grafana/grafana.db
chown grafana:grafana /var/lib/grafana/grafana.db# MySQL
mysql -u grafana -p grafana < /backup/grafana-mysql-20260524.sql# PostgreSQL
psql -U grafana grafana < /backup/grafana-postgres-20260524.sql

恢复配置文件与插件

# 恢复配置
rm -rf /etc/grafana
tar xzf /backup/grafana-config-20260524.tar.gz -C /# 恢复插件
rm -rf /var/lib/grafana/plugins
tar xzf /backup/grafana-plugins-20260524.tar.gz -C /# 统一修复权限
chown -R grafana:grafana /etc/grafana /var/lib/grafana

6.3 部分恢复:只恢复单个仪表盘

如果只是误删了某个仪表盘,不需要恢复整个数据库:

  1. 打开 Grafana → 左侧菜单 DashboardsImport

  2. 上传之前导出的 JSON 文件(参见第一篇博客中关于仪表盘导出的内容)

  3. 选择导入的文件夹,点击 Import

6.4 补充工具:grafanactl

除了手动备份恢复,Grafana 生态中还提供 grafanactl 工具,可以通过 API 备份和恢复实例中的所有资源(仪表盘、数据源、告警规则等),适合对备份有自动化需求的场景。

七、平滑升级检查清单

在生产环境执行升级前,建议逐项核对以下内容:

检查项 状态
✅ 已在测试环境验证新版本
✅ 备份配置文件(grafana.ini + provisioning)
✅ 备份数据库(grafana.db 或 mysqldump)
✅ 备份插件目录(/var/lib/grafana/plugins/)
✅ 记录当前版本和已安装插件列表
✅ 了解升级后插件的兼容性情况
✅ 准备好回滚方案和备份文件
✅ 选择业务低峰期执行升级
http://www.jsqmd.com/news/879928/

相关文章:

  • 岩石识别与展示系统设计文档
  • 踩坑无数!终于捋顺Git基础核心工作流(新手必看)
  • 如何用NightX Client打造终极Minecraft 1.8.9体验?完整功能解析+新手教程 [特殊字符]
  • 卖轴承怎么找客户?下游工厂在哪里
  • 用过才敢说!2026年最值得信赖的专业AI论文网站
  • Tableau Server安全加固与合规运维实战指南
  • 保姆级教程:在Ubuntu 22.04上搞定rMATS 4.1.2安装,附赠conda环境配置与常见报错解决
  • 如何在Mac上免费运行Windows游戏与应用:Whisky完整指南
  • Java小练
  • 权威测评!2026年顶尖AI论文写作软件榜单,高质初稿轻松写
  • CVE-2017-17215实战复现:华为HG532路由器栈溢出漏洞深度解析
  • 2026年5月知名的仿真人造草坪/硅pu篮球场厂家推荐灵动运体(河南)体育科技有限公司 - 品牌鉴赏师
  • 保姆级教程:用向日葵远程在Windows系统上安装Vector CANape 21.0.10(附Demo工程位置详解)
  • 6款主流降AIGC网站 创作效率拉满
  • AI写作辅助平台8款AI写作辅助软件梯队榜,毕业护航!
  • ClamAV更新失败真相:DNS TXT协议与版本兼容性解析
  • 邳州沙发翻新换皮换布面靠谱商家优选推荐|匠阁沙发翻新、御匠沙发翻新、锦修沙发翻新三大品牌、全品类沙发翻新换皮换布一站式服务 - 卓信营销
  • 溧阳沙发翻新换皮换布面靠谱商家优选推荐|匠阁沙发翻新、御匠沙发翻新、锦修沙发翻新三大品牌、全品类沙发翻新换皮换布一站式服务 - 卓信营销
  • 2026年5月有实力的一体化污水提升泵站/一体化泵站厂家推荐河北铄康环保设备有限公司,水质适应性广各类浑浊污水均可稳定输送处理 - 品牌鉴赏师
  • 建立在不同的基线模型上,GAT,GCN,和GIN
  • 2026年5月优秀的EPS外墙装饰/EPS装饰线条厂家推荐丰县建鑫泡沫制品有限公司,雕花构件定制打造建筑独特标识 - 品牌鉴赏师
  • ComfyUI-Impact-Pack V8进阶实战:掌握AI图像智能修复的3大核心场景与性能优化
  • 视觉无感定位破局 孪生技术重构空间管控逻辑
  • 前景理论(Prospect Theory)深入解析
  • 别再滥用CRUD了——用Go和DDD彻底驯服复杂业务
  • 【信息科学与工程学】计算机科学与自动化 ——第六十五篇 虚拟化/MIG 系列02
  • CPT 强化学习(Cumulative Prospect Theory Reinforcement Learning)代码实现
  • Claude在国内用不了?我挨个试了一遍
  • 英语 听力 重读软件app
  • 京东抢购脚本全解析:3步实现茅台秒杀自动化,告别手速烦恼