snow · 2026.5.15 11:04 · 조회 2

Grafana 백업 및 복구

백업 대상

Grafana의 모든 설정은 SQLite(기본) 또는 MySQL/PostgreSQL 데이터베이스와 설정 파일에 저장됩니다.

항목위치내용
데이터베이스/var/lib/grafana/grafana.db대시보드, 사용자, 데이터 소스, 알림 설정
설정 파일/etc/grafana/grafana.ini서버 설정
플러그인/var/lib/grafana/plugins/설치된 플러그인
Provisioning/etc/grafana/provisioning/코드 기반 설정

SQLite 데이터베이스 백업

1#!/bin/bash2BACKUP_DIR=/backup/grafana3DATE=$(date +%Y%m%d_%H%M%S)4mkdir -p $BACKUP_DIR5 6# 서비스 중단 없이 백업 (SQLite WAL 모드)7cp /var/lib/grafana/grafana.db $BACKUP_DIR/grafana_$DATE.db8 9# 설정 파일 백업10cp /etc/grafana/grafana.ini $BACKUP_DIR/grafana_$DATE.ini11 12# 30일 이상 된 백업 삭제13find $BACKUP_DIR -name "*.db" -mtime +30 -delete14 15echo "백업 완료: grafana_$DATE.db"

Cron 등록

10 2 * * * /opt/scripts/grafana-backup.sh >> /var/log/grafana-backup.log 2>&1

Docker 환경 백업

1# 볼륨 백업2docker run --rm \3  -v grafana_data:/source \4  -v /backup/grafana:/backup \5  alpine tar -czf /backup/grafana_$(date +%Y%m%d).tar.gz -C /source .

대시보드 내보내기

UI에서 개별 대시보드 내보내기

  1. 대시보드 열기
  2. 상단 공유 아이콘 → Export
  3. Export for sharing externally 활성화
  4. Save to file 클릭

API로 일괄 내보내기

1TOKEN="your-service-account-token"2GRAFANA_URL="http://grafana:3000"3 4# 대시보드 목록 조회5dashboards=$(curl -s -H "Authorization: Bearer $TOKEN" \6  "$GRAFANA_URL/api/search?type=dash-db" | jq -r '.[].uid')7 8# 각 대시보드 내보내기9for uid in $dashboards; do10  curl -s -H "Authorization: Bearer $TOKEN" \11    "$GRAFANA_URL/api/dashboards/uid/$uid" \12    | jq '.dashboard' > "dashboard_${uid}.json"13done

복구

데이터베이스 복구

1sudo systemctl stop grafana-server2cp /backup/grafana/grafana_20251001_020000.db /var/lib/grafana/grafana.db3sudo chown grafana:grafana /var/lib/grafana/grafana.db4sudo systemctl start grafana-server

대시보드 가져오기

Dashboards → Import → JSON 파일 업로드 또는 붙여넣기


MySQL/PostgreSQL 백업 (외부 DB 사용 시)

외부 DB를 사용하는 경우 표준 DB 백업 방식을 사용합니다.

1# MySQL 백업2mysqldump -u grafana -p grafana > grafana_$(date +%Y%m%d).sql3 4# 복구5mysql -u grafana -p grafana < grafana_20251001.sql

댓글

아직 댓글이 없습니다.

댓글을 작성하려면 로그인이 필요합니다.