본문 바로가기

Today I Learned (TIL)

수파베이스 마이그레이션 (수파베이스 계정 서버 옮기기) 24.02.01

728x90
반응형

 

결국 무료 트래픽 초과로 인해 수파베이스 서버를 옮기게 되었습니다....

수파베이스 서버를 옮겨야 한다! 싶을 때 보면 좋을 정리 글이 되겠네요

https://www.youtube.com/watch?v=nyX_EygplXQ

 

 

기본적으로 이영상을 따라 했습니다 자동 자막이 잘 돼있어서 영어 몰라도 참고할만했습니다

(물론 저는 튜터님(튜터님도 이거 보고하심) 설명 듣고 같이 봤습니다)

 

https://docs.docker.com/desktop/install/windows-install/

 

Install Docker Desktop on Windows

Get started with Docker for Windows. This guide covers system requirements, where to download, and instructions on how to install and update.

docs.docker.com

 

일단 시작 전에 독커 다운은 필수입니다 처음 써봤는데 그냥 다운로드하고 마이그레이션 하는 동안 켜놓으시면 끝입니다

 

간단하게 마이그레이션 하는 원리를 설명하자면 수파베이스 테이블 함수 트리거 설정을 그대로 베껴오는 게 아니라

빈 수파베이스 파일과 차이점을 가져옵니다

 

바로 복사하는 것이 아닌 빈 수파베이스 파일과 이미 있는 기존 수파 베이스의 차이점을 저장하는 거죠

(테이블 구성, 스키마. 트리거, 함수) 등등 중요한 건 거의 다 옮겨지지만 다만 스토리지는 안 옮겨졌습니다...

그리고 SQL 에디터로 만든 트리거가 누락되는 경우도 있습니다 CLI 명령으로 만든 쿼리는 꼭 기존

수파베이스 서버에서 가져오시길 바랍니다, 그리고 테이블 안에 저장된 데이터는 따로입니다..!

중요 서버 옮겼다고(마이그레이션) 완료됐다고 섣불리 삭제하지 마시길 바랍니다!


DocKer 독커를 켜놓셨다면 시작은 터미널(저는 power shell이 아니라 bash에서 입력했습니다)

 

0, 일단 터미널 열고(저는 bash 터미널에서 했습니다) npx에서 수파베이스 라이브러리 다운로드합니다

y 눌러주세요

 

 

1,수파베이스 init 하면 supabase라는 폴더가 생깁니다

 

2,수파베이스 start

 

뭔가 엄청나게 진행됩니다 시간은 약 1분 정도 소요

그리고 sudio URL 을 눌러보면 로컬 수파베이스 가 생성됩니다

그러면 독커에 무언가 생성이 됩니다
 
그리고 추가로 계속 명령어를 입력합니다 (거의다 끝났습니다)

 

3, 로컬 서버 띄운 후 도커랑 연결돼서 서버 스튜디오 url 열림 

수파베이스 db diff 실행

npx supabase db diff -f initial_structure --db-url 
postgres://postgres.iyoallierawqhlyuprvv:[YOUR-PASSWORD]@aws-0-ap-northeast-2.pooler.supabase.com:5432/postgres
 

db url은 옮겨야 할 기존 수파베이스 세팅-데이터베이스에서 가져오시면 됩니다 위에는 예시로 제걸 가져다 놨습니다 [YOUR-PASSWORD]는 아래쪽에 보시면 데이터베이스 비밀번호 있습니다

mrr 뒤쪽은 database 패스워드 입력하는 칸입니다

(수파베이스 계정 비밀번호 아닙니다!!)

데이터 베이스 비밀번호는 세팅->데이터베이스_>database password

 

4.sql 파일 생성 완료

이제 금화 3개 닮은 sql 파일을 살펴보면 그동안 해놓은 설정들이 다 표시되어 있습니다 권한 설정 도 어떤 식이지 다 나옵니다

 

이 파일은 실제 프로젝트 사용하는데 쓴 sql 설정 파일입니다

20240201091638_initial_structure.sql
0.02MB

새로 만든 수파베이스 프로젝트 SQL 에디터에 파일을 복사 붙여넣기 하면 기존 프로젝트랑 동일하게

설정이 완료됩니다.

 

그리고 테이블 설정을 가져왔다면 테이블 데이터도 따로 가져올 수 있습니다

여기서 사용한 명령어는 "더미 데이터 만" 가져옵니다 (db dump)

이렇게 가져온 seed.sql이라는 더미 데이터 안에는 그동안 회원가입한 유저 정보 테이블 안에 모든 정보들이 들어있습니다 가입한 이메일들도 들어있는 파일이니 소중히 관리하시길...

(SQL 에디터에 그대로 붙여 넣어 보려 했지만 용량이 너무 커서 그런지 안 들어갔습니다)

소셜 로그인 등의 프로바이더 설정을 다시 잡아줘야 합니다.

이미 한번 해본 적이 있다면 간단하게 연결 가능합니다 (구글은 원래 프로젝트에 추가만 해주면 되고

(카카오도 마찬가지로 프로젝트만 추가해 주면 금방 끝납니다)

 

그리고 마이그레이션이 끝났더라도 기존 프로젝트는 삭제하지 말고 그대로 두시는 게 좋습니다

 

특히나 트리거 설정은 안 옮겨지는 경우가 있어서 이전에 만든 SQL 에디터 명령어를 조금 잘라다가 다시 붙였네요

(회원가입한 유저정보를 user_info라는 테이블에 바로 옮기는 트리거였는데 함수만 옮겨지고 트리거가 안 옮겨 저

트리거 만드는 부분만 따로 SQL 에디터에서 잘라와 새로 생성했습니다)

 

근데 또 다른 트리거는 잘 옮겨진 거 보니 신기했습니다(함수와 동시 생성한 것 트리거만 안 옮겨졌네요)

아무튼 기존 프로젝트는 완전히 테스트 끝나기 전까지는 삭제 안 하시는 거 추천드립니다


 

지금 돌아보면 수파 베이스의 장점인 정말 간단한 마이그레이션 과정이었지만

맨날 프론트엔드만 하다가 이런 거 하니까 많이 어색해서 시간이 좀 소요됐습니다

뭔가 서버 관련된 거는 항상 건드리기가 무섭네요 ㄷㄷ...

그래도 마지막까지 무사히 완료되었습니다 튜터님이 개발자라면 리눅스 기본 명령어는 숙지해야 한다고 하시는데

이것도 좀 알아봐야겠습니다. 항상 말로만 듣던 리눅스... 아직도 멀고 험난한 개발자의 길입니다...

 

728x90
반응형