최근에 influxDB를 백업할 일이 있었다.
그래서 조사했던 백업 방법을 적어 놓으려고 한다
** 백업 방법
1. PC 전체를 백업
- 회사에서 NCP를 사용하고 있다. InfluxDB 또한 VPC에 자체적으로 설치해서 사용중이다
NCP 에서 서버 이미지 백업을 지원하기 때문에 손쉽게 할 수 있다
현재 InfluxDB의 용량도 크지 않고 비용도 저렴했다
2. influxDB의 백업 CLI
- Back up data in InfluxDB | InfluxDB OSS 2.0 Documentation (influxdata.com)
Document에 들어가면 백업용 CLI가 있다.
현재 사용중인 2.0 기준 아래와 같다
# Syntax
influx backup <backup-path> -t <root-token>
# Example
influx backup \
path/to/backup_$(date '+%Y-%m-%d_%H-%M') \
-t xXXXX0xXX0xxX0xx_x0XxXxXXXxxXX0XXX0XXxXxX0XxxxXX0Xx0xx==
3. influxDB의 이중화
- https://docs.influxdata.com/enterprise_influxdb/v1.8/guides/hardware_sizing/
- InfluxDB 엔터프라이즈는 2대 이상의 서버를 사용함으로써 이중화를 가능하게 한다는 내용을 볼 수 있다
유료이며 license가 필요하고 14일동안 무료로 사용해 볼 수 있다고 한다
- 가격 : https://github.com/chengshiwen/influxdb-cluster/wiki/Home-Eng#docker-quickstart
- 문서 : Install an InfluxDB Enterprise cluster | InfluxDB Enterprise 1.10 Documentation (influxdata.com)
아래는 개인이 InfluxDB enterprise를 모방해 만든 오픈소스이다
** 결론
아직 사용자가 많지 않고 돈도... 넉넉하진 않기 때문에 InfluxDB enterprise가 있다는 것만 알아두기로 했다
사용자가 많아지면 InfluxDB enterprise로 전환할 것이다 (전환할 시간도 인력도 없다...)
Linux의 Cron으로 하루에 한번 새벽 4시마다 InfluxDB Backup CLI가 동작되고 일주일이 지난 백업 파일은
삭제하도록 설정했다.
또한 클라우드에서 일주일마다 InfluxDB 서버 VPC의 이미지를 백업하기로 했다.
이미지는 2개만 유지하며 이전 이미지는 삭제하기로 정책을 정했다.
Linux cron- backup.sh 실행 & 로그 남김
0 4 * * * bash /var/lib/influxdb2/backup.sh >> /var/lib/influxdb2/cronlog.log 2>&1
backup.sh 내용
# backup
docker exec -i influxdb influx backup /var/lib/influxdb2/backup_$(date '+%Y-%m-%d_%H-%M') -t <토큰값>
# 7일이 지난 배업 데이터 삭제
for x in `ls /var/lib/influxdb2`; do
if [[ "$x" == backup_* ]] && [[ "$x" < "backup_$(date -d '7 days ago' '+%Y-%m-%d_%H-%M')" ]]; then
echo "rm -rf /var/lib/influxdb2/$x"
`rm -rf /var/lib/influxdb2/$x`
fi
done
댓글