InfluxDB 백업 (root authorization token이 없을때)

jhkim31·2023년 5월 22일
post-thumbnail

1. 문제

InfluxDB 데이터를 백업하는 과정에서 문제가 생겼다.

influxdb 컨테이너에 쉘로 접속하여 influx cli 명령을 통해 백업을 시도했고, 인증과정에서 문제가 생겼다.

influx backup -t {token} /backup

2. 원인

원인은 내가 가진 토큰이 권한이 부족한 것이였다.

내가 가진 토큰은 Web UI에서 생성한 All Access API Token으로  DB read, write에 대한 모든 권한이 있는 토큰이였지만,  
백업을 위해서는 더 높은 권한의 토큰 (Root Authorization Token 또는 Operator 토큰 이하 Root 토큰) 이 필요했다.

The influx backup command requires:
The directory path for where to store the backup file setThe root authorization token
(the token created for the first user in the InfluxDB setup process).

influxdb 공식문서 https://docs.influxdata.com/influxdb/v2.7/backup-restore/backup/

Root 토큰은 DB 초기화시에 잠깐 확인할 수 있던 토큰이고, 만약 삭제하지 않는다면 같은 권한을 가지는 토큰을 clone해서 사용할 수 있다.

하지만 나는 이 토큰 자체를 삭제해버려 더이상 진행할 수 없던 상태였다.

3. 해결

백업을 위해선 Root 토큰이 필요했고, 토큰을 복구시켜야 한다.

3.1 Root 토큰 복구

Root 토큰은 influxd_recovery  명령을 통해 복구시킬 수 있었다.

influxd recovery auth create-operator --org jhlab --username jhkim --bolt-path /var/lib/influxdb2/influxd.bolt

나는 Root 토큰(Operator 토큰)을 생성하는것이 목적이기 때문에 influxd recovery auth create-operator 명령을 사용했다.

bolt 파일의 경로는 docker 이미지를 사용했기 때문에 /var/lib/influxdb2/  경로에 위치해있었고, 만약 bolt 파일이 다른 경로에 위치해 있다면 해당 경로를 잡아주면 된다.

허나 명령 실행결과 다음과 같은 에러를 볼 수 있었다.

이미 influxdb가 실행중에 bolt 파일을 사용중이여서 접근하지 못하는 것이라고 한다.

3.2 bolt 파일 접근

bolt 파일에 접근하기 위해 influxdb를 실행시키지 않으면서 컨테이너를 실행시켰다.

docker run {.......} tail -f /dev/null

influxdb를 실행시키지 않는 influxdb 컨테이너를 만들기 위해 tail -f /dev/null 명령을 통해 깡통 컨테이너를 만든다.
이를 이용해 아무작업을 하지 않는 influxdb 컨테이너를 실행시키고 쉘을 통해 컨테이너에 접근한다.

docker exec -it {container} bash

recovery 명령을 다시 실행시키면 정상적으로 Root 토큰이 복구된것을 확인할 수 있다.

3.3 권한 차이 확인

그럼 Web UI로 만든 All Access API Token 과, Root Token에는 어떤 차이가 있나 알아보자.

컨테이너를 정상적으로 실행시킨후, 쉘로 접속하여 다음 명령으로 확인해볼 수 있다.

influx auth list -t {root token}

Root 토큰에는 처음 백업 실패시 에러메시지로 출력되던 read:authorizations 권한을 가진것을 알 수 있고, 다른 토큰들은 authorizations 권한을 가지지 못한걸 알 수 있다.

3.4 백업 진행

이제 Root 토큰이 생겼으므로 정상적으로 백업을 진행할 수 있다.

influxdb는 핫백업을 지원하기 때문에 운영중이더라도 상관없이 백업을 진행할 수 있다.

4. 참고자료

profile
김재현입니다.

0개의 댓글