Grafana 的备份需要覆盖 配置文件、数据库数据 和 仪表盘定义 三个核心部分。以下是详细的备份方案及操作步骤:
一、配置文件备份
1. 核心配置文件
- 路径:
/etc/grafana/grafana.ini
(默认路径) - 备份命令:
sudo cp /etc/grafana/grafana.ini /backup/grafana/grafana.ini.bak
2. Provisioning 配置(数据源/仪表盘预配置)
- 路径:
/etc/grafana/provisioning/
- 备份命令:
sudo tar -czvf /backup/grafana/provisioning.tar.gz /etc/grafana/provisioning/
二、数据库备份
Grafana 的元数据(用户、仪表盘、组织等)存储在数据库中,需根据实际数据库类型操作:
1. SQLite(默认数据库)
- 数据库路径:
/var/lib/grafana/grafana.db
- 备份命令:
sudo sqlite3 /var/lib/grafana/grafana.db ".backup '/backup/grafana/grafana.db.bak'"
2. MySQL/MariaDB
- 备份命令:
mysqldump -u [用户名] -p[密码] grafana > /backup/grafana/grafana_mysql.sql
3. PostgreSQL
- 备份命令:
pg_dump -U [用户名] -d grafana -f /backup/grafana/grafana_pg.sql
三、仪表盘单独备份
1. 手动导出(通过 Web 界面)
- 访问仪表盘 → 点击设置(齿轮图标)→ Export → 保存为 JSON 文件。
2. 自动化导出(API 批量导出)
# 获取所有仪表盘 UID
curl -s -H "Authorization: Bearer [API_KEY]" http://localhost:3000/api/search | jq '.[].uid' > dashboards.list# 批量导出 JSON
mkdir /backup/grafana/dashboards/
while read uid; docurl -s -H "Authorization: Bearer [API_KEY]" \http://localhost:3000/api/dashboards/uid/$uid | jq '.dashboard' > "/backup/grafana/dashboards/${uid}.json"
done < dashboards.list
四、插件备份
- 插件目录:
/var/lib/grafana/plugins/
- 备份命令:
sudo tar -czvf /backup/grafana/plugins.tar.gz /var/lib/grafana/plugins/
五、自动化备份脚本
#!/bin/bash
BACKUP_DIR="/backup/grafana/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR# 备份配置文件
sudo cp /etc/grafana/grafana.ini $BACKUP_DIR/
sudo tar -czvf $BACKUP_DIR/provisioning.tar.gz /etc/grafana/provisioning/# 备份数据库(以 SQLite 为例)
sudo sqlite3 /var/lib/grafana/grafana.db ".backup '$BACKUP_DIR/grafana.db.bak'"# 备份插件
sudo tar -czvf $BACKUP_DIR/plugins.tar.gz /var/lib/grafana/plugins/# 清理7天前的备份
find /backup/grafana/ -type d -mtime +7 -exec rm -rf {} \;
六、恢复流程
-
恢复配置文件:
sudo cp /backup/grafana.ini /etc/grafana/grafana.ini sudo tar -xzvf provisioning.tar.gz -C /
-
恢复数据库:
- SQLite:
sudo cp grafana.db.bak /var/lib/grafana/grafana.db sudo chown grafana:grafana /var/lib/grafana/grafana.db
- MySQL:
mysql -u [用户] -p[密码] grafana < grafana_mysql.sql
- SQLite:
-
恢复插件:
sudo tar -xzvf plugins.tar.gz -C /
七、最佳实践建议
- 加密敏感数据:备份文件若含密码等敏感信息,建议使用
gpg
加密。 - 异地存储:将备份同步至云存储(如 AWS S3)或异地服务器。
- 定期验证:每季度执行一次恢复演练,确保备份有效性。
- 版本控制:对导出的 JSON 仪表盘使用 Git 管理变更历史。
通过此方案,可实现 Grafana 的全量灾备,确保在系统崩溃或误操作时快速恢复服务。