Fly.io PostgreSQL 데이터베이스 로컬 내보내기

Exporting fly.io postgres database

작성자
발행일
2025년 11월 14일

핵심 요약

  • 1 Fly.io에 호스팅된 PostgreSQL 데이터베이스를 로컬 환경으로 내보내는 구체적인 절차를 안내합니다.
  • 2 fly proxy 명령을 사용하여 원격 DB에 로컬 포트 포워딩을 설정하고, pg_dump로 데이터 덤프를 생성하는 방법을 설명합니다.
  • 3 DATABASE_URL 환경 변수에서 데이터베이스 비밀번호를 추출하고, 로컬에서 덤프 파일을 테스트하는 과정을 포함합니다.

도입

최근 devlibrary와 같은 소규모 취미 프로젝트에 Fly.io를 활용하는 사례가 늘고 있습니다. 이 글은 Fly.io에 배포된 애플리케이션의 PostgreSQL 데이터베이스를 SQLite로 전환하기 위한 첫 단계로, 원격 PostgreSQL 데이터베이스를 로컬 환경으로 안전하게 내보내는 구체적인 방법을 다룹니다. 이를 통해 개발자는 로컬에서 데이터베이스를 쉽게 관리하고, 다른 데이터베이스 시스템으로의 마이그레이션을 준비할 수 있습니다.

Fly.io PostgreSQL 데이터베이스를 로컬로 내보내는 과정은 다음과 같은 단계로 진행됩니다.

1. Fly Proxy를 통한 원격 DB 연결

가장 먼저, 원격 Fly.io 데이터베이스에 로컬에서 접속할 수 있도록 프록시를 설정해야 합니다. 다음 명령어를 사용하여 devlibrary-db라는 이름의 PostgreSQL 앱에 대해 localhost:5434 포트로 프록시를 실행합니다. bash fly proxy 5434:5432 -a devlibrary-db 이 명령은 로컬 5434 포트를 원격 데이터베이스의 5432 포트에 연결하여 로컬에서 원격 DB에 접근할 수 있게 합니다.

2. 데이터베이스 비밀번호 추출

데이터베이스 덤프를 생성하려면 비밀번호가 필요합니다. 이 비밀번호는 DATABASE_URL 환경 변수에서 추출할 수 있습니다. 다음 fly ssh console 명령을 통해 원격 서버의 환경 변수를 확인하고 비밀번호를 얻습니다. bash fly ssh console -C "printenv" | grep DATABASE_URL 이 명령은 원격 서버에 SSH로 접속하여 printenv로 모든 환경 변수를 출력한 후, grep을 사용하여 DATABASE_URL 라인을 필터링합니다.

3. pg_dump를 이용한 데이터베이스 덤프 생성

프록시가 실행되고 비밀번호를 확보했다면, 이제 pg_dump 명령어를 사용하여 데이터베이스 덤프를 생성할 수 있습니다. 별도의 터미널 창에서 다음 명령어를 실행하고, 프롬프트가 나타나면 추출한 비밀번호를 입력합니다. bash pg_dump -h localhost -p 5434 -U devlibrary devlibrary > devlibrary-dump.sql 이 명령어는 localhost:5434를 통해 devlibrary 데이터베이스에 접속하여 모든 데이터를 devlibrary-dump.sql 파일로 내보냅니다.

4. 로컬 데이터베이스에 덤프 로드 테스트

생성된 덤프 파일이 올바른지 확인하기 위해 로컬 PostgreSQL 데이터베이스에 데이터를 로드하여 테스트할 수 있습니다. bash psql devlibrary < my-db-dump.sql 이 과정을 통해 데이터가 성공적으로 내보내졌음을 검증할 수 있습니다.

결론

본 글에서는 Fly.io에 호스팅된 PostgreSQL 데이터베이스를 로컬 환경으로 내보내는 일련의 과정을 상세히 설명했습니다. `fly proxy`를 통한 안전한 연결 설정부터 `pg_dump`를 활용한 데이터 덤프 생성, 그리고 로컬 데이터베이스 로드 테스트까지, 각 단계는 개발자가 원격 DB를 효율적으로 관리하고 필요에 따라 데이터베이스 시스템을 전환할 수 있는 기반을 제공합니다. 이 절차는 향후 SQLite로의 전환과 같은 더 복잡한 데이터베이스 마이그레이션 작업의 중요한 첫걸음이 될 것입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!