PlanetScale의 Hobby 플랜이 종료되었다.. Supabase로 갈아타기

Sohee Yeo·2024년 4월 17일
1
post-thumbnail

PlanetScale은 MySQL과 호환되는 Serverless Database 플랫폼이다. 나는 이전 개인 프로젝트를 진행할 때 Hobby 플랜(무료 버전)을 사용했다. 다른 프로젝트에 집중하느라 한동안 PlanetScale의 데이터베이스를 건드리지 않았더니 sleep 모드로 전환되었고, 다시 활성화하려 했더니..

Note
The Hobby plan was deprecated on April 8th, 2024. Any Hobby databases that have not been migrated by April 8th, 2024 have been slept. Read the Hobby plan deprecation FAQ documentation more information about next steps.
If you were previously on the Hobby plan and you need to migrate your data, but your database has been slept, you can wake your database one time to export your data. Follow the instructions in the Hobby plan deprecation FAQ to dump your data.

4월 8일에 Hobby 플랜이 중지되었다는 공지를 보게 되었다....
데이터베이스 연결이 되지 않아 웹 사이트는 제대로 동작하지 않았고, 나는 이를 해결하기 위해 PlanetScale의 플랜을 업그레이드하거나 다른 해결책을 찾아야만 했다.

이리저리 찾아본 결과 Supabase를 알게 되었다. Supabase는 PostgreSQL 기반의 DB 기능을 제공해주는 백엔드 서비스 플랫폼이다. 무료로 사용할 수 있다는 점이 마음에 들었다. 무료로 제공해주는 규모는 작지만, 나의 프로젝트 또한 작은 규모이기 때문에 문제 될 점이 없다고 생각했다.

이제 PlanetScale의 데이터베이스를 Supabase로 옮겨야 하는데.. 나는 Prisma와 함께 사용하고 있어서 Prisma seeding으로 데이터베이스를 저장할까 고민했다. 하지만 유저 정보 같은 데이터들도 저장해야 했기 때문에 기존의 데이터베이스를 한꺼번에 옮기는 것이 좋을 것으로 생각했다.

PlanetScale → Supabase로 마이그레이션 하는 방법을 친절하게 설명해 주신 블로그 글을 발견했다.
https://velog.io/@wjdghks963/planetscale-superbase-%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98
이 글을 토대로 데이터 옮기기에 성공했다.

Supabase 시작하기

https://supabase.com

Supabase에서 회원가입을 완료하고, Dashboard의 New project를 클릭해 프로젝트를 만든다.
프로젝트명과 데이터베이스 비밀번호를 설정하면 되는데, 나는 Generate a password로 비밀번호를 설정했다.

Database 페이지에서 connect 버튼을 클릭하면 URI를 확인할 수 있다.
중간의 [YOUR-PASSWOD] 란에 아까 설정한 비밀번호를 넣어 사용하면 된다.

Prisma 수정

이제 Prisma를 재설정해보자. 위의 URI는 프로젝트의 .env 파일의 DATABASE_URL으로 저장하는데, Can't reach database server.. 이라는 연결 에러가 날 수 있다고 한다.
이를 방지하기 위해 DATABASE_URL에 넣은 URI를 복사해 DIRECT_URL 변수로 이름을 수정하고 DATABASE_URL 변수에는 포트 번호 6543으로 저장, URI 뒤에 ?pgbouncer=true 쿼리스트링을 추가해준다.

schema.prisma 파일도 수정해야 한다. mysql → postgresql로 바꾸고, directUrl = env("DIRECT_URL")을 추가한다.

npx prisma db push로 Supabase에 테이블을 생성해준다.

데이터베이스 옮기기

https://dbeaver.io/download/
DBever을 사용하여 작업을 진행했다. 로컬로 MySQL을 켜고 DBever에서 데이터베이스 연결을 했다.

새 데이터베이스 연결 버튼을 클릭해 PostgreSQL도 연결해준다.

Connection Settings 창이 뜨는데, Supabase의 데이터베이스 정보들을 넣어야 한다.
Supabase 화면의 왼쪽 하단의 설정 버튼 - Database에 들어가면 Host, User 정보가 있을 것이다.

Host - Host, Username - User, Password - 데이터베이스 비밀번호를 넣어준다.

그럼 이렇게 연결되었을 것이다!

이동시킬 데이터가 있는 MySQL에서 데이터 내보내기를 한다. 데이터 내보내기 창의 다음 버튼을 클릭하면 Choose 버튼으로 내보낼 postgres를 선택할 수 있다. public 선택 후 계속 다음 버튼을 누르면 데이터가 내보내기가 완료된다.

프로젝트 재배포하기

수정된 DATABASE_URL, DIRECT_URL를 환경변수에 저장하고 재배포하면 프로젝트가 정상적으로 작동할 것이다! 👏👏👏




참고

https://velog.io/@wjdghks963/planetscale-superbase-%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98

https://www.heropy.dev/p/bCffI2

profile
실패에 무딘 사람. 프론트엔드 개발자를 꿈꿉니다

0개의 댓글