다른 postgres 클러스터에서 데이터 가져오기 (Import data from another postgres cluster)
다른 Postgres 클러스터의 데이터를 Fly Managed Postgres(MPG) 클러스터로 가져오는 방법을 알려드려요. 표준 Postgres 덤프와 복원 과정을 통해 기존 데이터를 새 MPG 클러스터로 이전할 수 있어요.
출처: 문서
본문
다른 postgres 클러스터의 데이터를 Managed Postgres 클러스터로 가져오기
비관리형(unmanaged) Fly Postgres 클러스터나 다른 Postgres 제공업체에서 Fly Managed Postgres(MPG)로 마이그레이션한다면, 데이터를 MPG 클러스터로 가져와야 해요.
현재 기존 DB의 데이터를 자동으로 마이그레이션하는 방법은 없지만, MPG 클러스터를 만든 후 표준 Postgres 덤프 및 복원 과정으로 이를 수행할 수 있어요.
간단한 데이터베이스의 경우 다음을 실행하는 것만으로 충분할 수 있어요:
pg_dump "$LEGACY_PG_CONNECTION_STRING" | psql "$MPG_URI".
MPG 클러스터는 Fly Private Network 안에서 실행되므로, MPG 데이터베이스로 복원하려면 조직의 WireGuard 네트워크에 연결되어 있어야 해요. 로컬 머신에서 가져오기 과정을 실행하려면 다음 단계를 따르세요:
-
Fly.io 대시보드에서 또는
**경고:** 새 클러스터는 가져오는 데이터베이스 이상의 크기인 볼륨으로 생성해야 해요. 그렇지 않으면 가져오기 과정이 실패해요.fly mpg create를 사용해 Managed Postgres 클러스터를 만드세요. -
다음으로 MPG 데이터베이스에 프록시 연결을 엽니다:
$ fly mpg proxy ? Select Organization: My Organization (personal) ? Select a Postgres cluster my-test-cluster (iad) Proxying localhost:16380 to remote [fdaa:1:2345:0:0::67]:5432 -
대시보드에서 MPG 클러스터의 연결 문자열을 찾아 로컬 프록시를 사용하도록 수정하세요:
Connection String: postgres://fly-user:***@localhost:16380/fly-db -
덤프 및 복원 명령을 실행하세요:
pg_dump "$LEGACY_PG_CONNECTION_STRING" | psql postgres://fly-user:***@localhost:16380/fly-db -
모든 것이 성공하면 레거시 클러스터의 모든 데이터가 새 MPG 클러스터로 가져와져요.
더 크거나 복잡한 데이터베이스의 경우 덤프 및 복원 과정을 여러 단계로 나눠야 할 수 있어요. pgloader나 pgcopydb 같은 전용 PG 마이그레이션 도구를 사용하는 것도 고려해 볼 수 있어요.
제한 사항 (Limitations)
일부 소스 데이터베이스는 Fly Managed Postgres 클러스터로 가져오기에 적합하지 않을 수 있어요. 가져오기를 막는 일반적인 경우는 소스 데이터베이스가:
- MPG가 지원하지 않는 타사 확장에 의존하는 경우
- 1 TB보다 큰 경우 (MPG 클러스터의 최대 스토리지 한도)
참고: MPG는 최대 1 TB의 스토리지를 지원하지만, 초기 클러스터 생성은 500 GB로 제한돼요. 500 GB보다 큰 데이터베이스는 최대 초기 크기로 클러스터를 만든 다음, 가져오기 과정 이후에 스토리지를 확장해야 해요.
멀티 스키마와 멀티 데이터베이스 가져오기를 지원해요. 앱이 여러 스키마나 데이터베이스를 사용한다면, 기본 fly-user 또는 schema_admin 역할을 가진 다른 사용자로 실행할 때 가져오기가 예상대로 동작해야 해요.