Apache Superset

[Superset] Backend DB 초기화 후 복구하기

비번변경 2024. 3. 26. 16:14

개요

AWS EKS 클러스터에서 Helm으로 Superset을 설치하여 사용하고 있다. 이전에 EKS 버전 업그레이드를 작업하면서 superset을 지웠다가 다시 설치한 이력이 있는데, 실수를 했는지 Dataset이 편집되지 않고 있다…….

superset Pod 로그를 확인해보니

테이블 업데이트 과정에서 시퀀스로 되어 있을 id 값에서 중복 에러가 발생하고 있었다. DB가 꼬여있는 것 같아 현재 superset Backend를 삭제하고 다시 복구한다.

 

참고로 superset 관련 버전은 다음과 같다.

- 현재 superset helm chart version : 0.11.2

- 현재 superset app version : 3.0.1

- 데이터 백업 시 superset helm chart : 0.9.3

- 데이터 백업 시 superset app version : 2.1.0

 

즉, 현재 동작하고 있는 superset 2.1.0 버전에서 사용하고 있던 데이터를 superset 3.0.1 버전에서 사용할 수 있도록 복구하려고 한다. 작업했던 순서를 적어둔다.

 

순서

1. 덤프 파일 복사

EKS에 접속할 수 있는 환경에 복구할 데이터베이스 덤프 파일을 미리 저장해두었다. 저장해둔 덤프 파일을 superset PostgreSQL pod 내 적당한 경로에 복사한다.

kubectl cp dumpall_superset_postgres.sql superset-postgresql-0:tmp/dumpall_superset_postgres.sql

 

 

2. superset PostgreSQL 접속

superset PostgreSQL 포드에 접속한 뒤, PostgreSQL DB에 접속한다.

kubectl exec -it superset-postgresql-0 -- bash

먼저 덤프 파일이 잘 복사되었는지 확인한다.

 

PostgreSQL DB 접속할 때는 superset DB 삭제가 필요하므로 관리자 권한이 있는 계정을 사용해야 한다.

echo $POSTGRES_POSTGRES_PASSWORD
psql -U postgres

 

 

2. superset DB 삭제 후 재생성

서비스가 동작하고 있는 상태에서 DATABASE를 삭제하는 경우에는 강제 삭제가 필요하다.

superset DB 자체가 없으면 helm을 통한 superset 재배포를 수행할 수 없으므로 superset이라는 이름의 데이터베이스를 다시 생성한다.

DROP DATABASE superset WITH ( FORCE );

CREATE DATABASE superset;

여기까지 수행하고 웹 브라우저에서 superset을 접속해보면 아무 데이터도 남아있지 않은 상태여야 한다. 아마 로그인되어 있다면 로그인 페이지로 리다이렉션된다.

 

 

4. Superset 재설치

Superset DB 내 스키마가 원하는 버전에 맞게 생성될 수 있도록 superset을 재배포한다.

helm upgrade --install --values values.yaml superset superset/superset --version 0.11.2

 

 

5. 데이터 복구

superset PostgreSQL 포드에 접속한 뒤, 복사해둔 데이터베이스 덤프 파일로 데이터 복구를 수행한다.

kubectl exec -it superset-postgresql-0 -- bash
echo $POSTGRES_POSTGRES_PASSWORD

psql -U postgres -f dumpall_superset_postgres.sql
psql -U postgres -f dumpall_superset_postgres.sql

참고로 해당 덤프 파일은 dump_all 명령어로 생성한 건데, 복구 자체를 두 번 수행해야 정상적으로 동작했다. 한 번만 수행하면 Dataset 내 컬럼 정보가 유지되지 않은 상태로 남아있었다.

 

 

확인

웹 브라우저에서 superset에 접속하여 복구된 데이터가 정상적인지, Dashboard 시각화에 이상이 없는지 그리고 Dataset 편집도 잘 이루어지는지 확인한다.

728x90