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
이 과정을 통해 데이터가 성공적으로 내보내졌음을 검증할 수 있습니다.