백엔드/Supabase

Supabase CLI 사용해서 데이터베이스 내보내기, 불러오기

다소스랩 2024. 11. 25. 22:43
반응형

Supabase를 사용하다보면 데이터베이스를 다른 계정으로 옮기거나, 새로운 데이터베이스 서버로 마이그레이션 해야 하는 상황이 발생할 수 있습니다. 저의 경우 Supabase 클라우드를 사용하고 있고, 계정 A에 있던 데이터베이스를 계정 B로 이동해야 했습니다.

 

이 글에서는 Supabase 데이터베이스 데이터를 옮기는 방법에 대해 다루고 있으며, Supabase Auth는 사용하고 있지 않는 상태였다는점 참고해주세요.

 

Supabase CLI 설치

먼저, Supabase cli를 설치해줍니다. macOS에서는 brew를 사용해 바로 설치가 가능합니다.

brew install supabase/tap/supabase

 

운영체제에 따라 설치 방법이 다르니 공식문서를 참고해주세요.

 

환경 변수 설정

cli 설치가 완료되면, 터미널 실행 경로에 `.env 파일`을 생성해 환경 변수를 설정해야 합니다.

SUPABASE_DB_HOST=""
SUPABASE_DB_PORT=""
SUPABASE_DB_USER=""
SUPABASE_DB_PASSWORD=""
SUPABASE_DB_NAME=""

 

환경 변수에 필요한 값들은 Supabase 대시보드에서 확인 가능합니다.

 

메뉴 목록

 

사이드바 하단에 톱니바퀴(설정) 아이콘 클릭 후 Database 페이지로 이동합니다.

 

Database 설정

 

이 정보들은 데이터베이스 설정값이기 때문에 외부에 노출되지 않도록 유의해야 합니다.

(저는 현재 프로젝트를 삭제했습니다.)

 

 

비밀번호가 생각이 안날 경우 `Reset database password` 버튼을 클릭하면 비밀번호를 바로 변경할 수 있습니다.

 

 

비밀번호 규칙이 까다로워서 자동 생성 후 복사하는 것이 편합니다.

 

내보내기(Export)

데이터베이스 전체 구조와 데이터를 내보낼 때 supabase cli를 사용합니다.

// 데이터베이스 전체 구조(스키마, 테이블, 데이터 타입 등) 저장
supabase db dump --file ./dump.sql

// 데이터 저장
supabase db dump --data-only --file ./dump-data.sql

 

불러오기(Import)

데이터베이스를 가져오는 과정에서는 psql 명령어를 사용합니다. psql은 postgresql이 설치되어 있어야 실행 가능합니다.

 

(만약 다른 데이터베이스에서 불러오기를 하신다면 해당 데이터베이스에 맞는 명령어를 입력하셔야 합니다.)

 

Supabase 프로젝트에서 불러오기를 하는 경우, 해당 프로젝트의 postgresql 버전도 확인해줍니다. 버전이 맞지 않으면 오류가 발생할 수 있으므로 저는 15버전으로 맞췄습니다.

 

먼저, `PGPASSWORD` 환경 변수를 설정해 비밀번호를 주입합니다.

export PGPASSWORD=''

 

 

아래 명령어로 덤프 파일을 복원할 수 있습니다.

psql -h {host} -p {port} -U {username} -d {database name} -f {filename}

 

실제 예시 명령어입니다.

psql -h aws-0-ap-northeast-2.pooler.supabase.com -p 6543 -U postgres.stejwznngdteutifdomy -d postgres -f dump.sql

psql -h aws-0-ap-northeast-2.pooler.supabase.com -p 6543 -U postgres.stejwznngdteutifdomy -d postgres -f dump-data.sql

 

`dump.sql`과 `dump-data.sql` 모두 복원이 완료됩니다.

반응형