Supabase DB 복사하기 ‐ 허혜민 - Team-HGD/SniffMEET GitHub Wiki

작업 내역

백로그

supabase DB 변경

기존 프로젝트 DB Dump 뜨기

1. Supabase CLI 다운로드

brew install supabase/tap/supabase 

아래 명령어는 도커 클라이언트만 다운로드 받는 명령어입니다.

brew install docker
brew install docker-compose

아래 링크에서 컴퓨터 상황에 맞게 도커 서버 앱도 설치해줍니다.

https://docs.docker.com/desktop/setup/install/mac-install/

도커 클라이언트와 도커 서버(도커 앱)을 모두 다운 받아야 합니다.

도커 클라이언트만 다운로드 받으면 dump 시 아래와 같은 에러가 발생합니다.

1

2. Supabase CLI 로그인

로그인을 위해 Access Token을 발급받습니다.

Supabase Team > Access Tokens에서 발급할 수 있습니다. (프로젝트 단위가 아닌 팀단위로 Access Token을 관리합니다.

2

Access Token은 발급 당시에만 확인이 가능하므로 잘 기록해두어야 합니다.

이제 이 Access Token으로 CLI에서 로그인을 진행합니다.

supabase login --token [access_token]

3. 로컬에 프로젝트 생성

supabase init 

Deno를 사용하지 않아서 모두 No로 설정했습니다.

3

Remote에 있는 projects list를 확인할 수 있습니다.

LINKED가 빈 값으로 설정되어 있는 이유는 로컬 프로젝트와 연결된 것이 없기 때문입니다.

4

그럼 로컬과 Remote를 연결해봅시다.

supabase link
Selected project: [project ref id]
Enter your database password (or leave blank to skip): 

연결하고 싶으면 DB password를 입력하라고 하네요. 당장 skip 하더라도 나중에 dump 뜰 때 반드시 입력해야 하니 지금 입력하겠습니다.

dump 뜰 Project > Settings > Database > Database Password 에서 새로운 Database password를 설정할 수 있습니다.

5 6

DB password도 설정 후에는 다시 확인할 수 없으니 잘 기록해두어야 합니다. 까먹으면 reset 해야 합니다.

4. dump

드디어 dump를 뜨기 위한 모든 설정을 마쳤습니다.

아래 명령어를 실행하면 해당 명령어를 실행한 디렉토리에 supabase/schema.sql 파일이 생성됩니다.

supabase db dump -f supabase/schema.sql

7

schema.sql이 생성된 모습

Dump 뜬 sql 옮기기

1. 옮길 대상 project와 link하기

동일 팀계정에서 Dump를 복사하는 경우를 기준입니다.

만약 다른 계정의 DB에 Dump를 붙여넣을 계획이라면 logout하고 해당 팀 계정으로 login 후 진행하시면 됩니다.

  • 다른 계정 DB에 Dump 시 필요한 추가 과정

    • 기존 계정에서 로그아웃
    supabase logout
    
    • 붙여넣을 계정으로 로그인
    supabase login --token [access_token] 
    

붙여넣을 프로젝트와 dump 뜬 프로젝트의 구분을 위해 새로운 디렉토리를 생성했습니다.

mkdir release 
cd release # 붙여넣을 프로젝트 경로 

dump 뜰때와 동일하게 새로운 로컬 프로젝트 생성합니다.

supabase init 

붙여넣을 프로젝트 reference id를 선택해서 link를 진행합니다.

supabase link
Selected project: [project ref id]
Enter your database password (or leave blank to skip): 

2. 마이그레이션

이제 아래 명령어를 실행시킵니다. 그럼 디렉토리에 migrations.sql이라는 빈파일이 하나 생성됩니다.

supabase migration new migration

8

migration.sql 파일이 생성된 모습

기존 dump 뜬 프로젝트의 schema.sql의 내용을 그대로 migration.sql에 복사해 붙여넣습니다.

SQL 파일이라 바로 안 열릴텐데, 텍스트 편집기로 열면 잘 열립니다.

이제 아래 명령어를 작성해 remote DB에 push합니다.

supabase migration up --db-url postgresql://postgres.PROJECT_NAME:[email protected]:6543/postgres

명령어 마지막에 작성된 URI는 Supabase에서 Connect > Transaction pooler에 정의된 URI를 그대로 복사해 붙여넣으면 됩니다.

9

10

또는 remote DB와 local DB가 link 되어 있는 상태라면 아래 명령어도 동일하게 동작합니다.

supabase db push

Supabase Console > Migrations에 가면 migrations.sql에 작성한 쿼리문과 마이그레이션 시간이 남아있는 것을 확인할 수 있습니다.

11

12

한 가지 덧붙이자면 anon sign in 설정은 sql 마이그레이션 내용에 포함되지 않는 모양입니다.

anon sign in을 사용한다면 마이그레이션 한 프로젝트 설정에서 따로 사용 설정을 해주셔야 합니다.

레퍼런스