이 페이지에서는 Cloud SQL에서 직접 만든 기존 PostgreSQL용 Cloud SQL 인스턴스로 데이터베이스를 마이그레이션하는 방법을 설명합니다.
이 경로는 대상 인스턴스가 다른 팀에서 관리되거나 Database Migration Service 외부에서 인스턴스를 만들어야 하는 시나리오에 유용합니다(예: Terraform을 사용하거나 특정 커스텀 플래그가 필요하거나 고급 네트워크 토폴로지가 필요한 경우). 마이그레이션에 다른 요구사항이 있는 경우 다른 마이그레이션 흐름을 따르는 것이 좋습니다. 자세한 내용은 PostgreSQL 마이그레이션 시작하기를 참조하세요.
대략적으로 마이그레이션은 다음 단계를 따릅니다.
- Database Migration Service가 데이터를 새 데이터베이스로 이동할 수 있도록 소스 데이터베이스를 구성합니다.
- 소스 PostgreSQL 인스턴스에 대한 네트워크 연결을 설정합니다.
- 기존 대상 Cloud SQL 인스턴스를 준비하고 구성합니다.
- 소스 연결 프로필과 마이그레이션 작업을 만듭니다.
- 마이그레이션 작업을 시작하고 모니터링합니다.
- 마이그레이션 작업을 승격하고 새 데이터베이스를 사용하도록 애플리케이션을 이동합니다.
비용
이 문서에서는 비용이 청구될 수 있는Google Cloud구성요소를 사용합니다.
- Cloud SQL ( Cloud SQL 가격 책정 참조)
- 고객 관리 암호화 키 (CMEK)를 저장하는 데 사용되는 경우: Cloud Storage( Cloud Storage 가격 책정 참조)
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
시작하기 전에
- 이 이전 경로가 시나리오를 완전히 지원할 수 있는지 확인합니다.
다음 페이지를 참고하세요.
- 시나리오 개요 페이지의 지원되는 소스 및 대상에는 지원되는 모든 소스 및 대상 버전이 나열되어 있습니다.
- 기존 인스턴스의 알려진 제한사항에서는 기존 대상 인스턴스에 기존 사용자 정의 데이터가 포함되어서는 안 된다는 요구사항을 포함한 제한사항을 설명합니다.
- 대상 데이터베이스를 만들 리전을 고려합니다. Database Migration Service는 완전한 리전 제품입니다. 즉, 마이그레이션과 관련된 모든 항목 (소스 및 대상 연결 프로필, 마이그레이션 작업, 대상 데이터베이스, 변환 작업공간)을 단일 리전에 저장해야 합니다.
- Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
- Database Migration Service 및 Cloud SQL Admin API를 사용 설정합니다.
필요한 역할
Database Migration Service를 사용하여 동종 PostgreSQL 마이그레이션을 수행하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 필요한 IAM 역할을 부여해 달라고 요청하세요.
-
데이터베이스 마이그레이션 관리자 (
roles/datamigration.admin) -
Cloud SQL 편집자 (
roles/cloudsql.editor) - Database Migration Service 외부에서 대상 인스턴스를 만들거나 구성해야 하는 경우
Cloud SQL 관리자 (
roles/cloudsql.admin)도 필요합니다. -
Cloud SQL Studio 사용자 (
roles/cloudsql.studioUser)
역할 부여에 대한 자세한 내용은 Identity and Access Management 문서의 액세스 관리를 참조하세요.
이러한 사전 정의된 역할에는 Database Migration Service를 사용하여 동종 PostgreSQL 마이그레이션을 수행하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
Database Migration Service를 사용하여 동종 PostgreSQL 마이그레이션을 수행하려면 다음 권한이 필요합니다.
datamigration.*cloudsql.instances.createcloudsql.instances.getcloudsql.instances.listcloudsql.instances.updatecloudsql.instances.deletecloudsql.operations.getcloudsql.users.listcloudsql.users.getcloudsql.users.createcloudsql.users.updatecloudsql.users.delete
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
소스 데이터베이스 준비
이전을 위해 소스 데이터를 준비하려면 다음 단계를 따르세요.
- 소스 네트워크 연결 방법을 선택하고 구성합니다.
- 소스 데이터베이스 인스턴스를 구성합니다. 대략적으로 다음 단계가 포함됩니다.
- 소스 데이터베이스와 마이그레이션할 모든 데이터베이스에
pglogicalPostgreSQL 확장 프로그램 (버전 2.2.1 이상)을 설치합니다. - PostgreSQL 매개변수 구성:
wal_level = logical을 설정하고max_replication_slots,max_wal_senders,max_worker_processes에 적절한 값을 설정합니다. - 마이그레이션 사용자에게 복제 권한을 부여하고 대상 Cloud SQL 인스턴스의 연결을 허용하도록
pg_hba.conf를 구성합니다.
자세한 내용은 소스 데이터베이스 구성을 참조하세요.
- 소스 데이터베이스와 마이그레이션할 모든 데이터베이스에
- 소스 연결 프로필을 만듭니다.
대상 인스턴스 준비 및 구성
기존 Cloud SQL 인스턴스 (예: 다른 팀에서 사전 프로비저닝하거나 Terraform으로 관리하는 인스턴스)로 마이그레이션할 때는 마이그레이션 작업을 만들기 전에 인스턴스가 모든 Database Migration Service 기본 요건을 충족하는지 확인하세요.
- 인스턴스 준비 및 데이터 상태:
- 대상 인스턴스는
RUNNABLE상태의 독립형 인스턴스 (복제본 아님)여야 합니다. - 인스턴스는 마이그레이션 작업 및 연결 프로필과 동일한 Google Cloud 리전에 있어야 합니다.
- 인스턴스는 한 번에 하나의 활성 마이그레이션 작업에만 연결할 수 있습니다.
- 대상 인스턴스에는 기존 사용자 데이터, 사용자 정의 테이블 또는 비시스템 데이터베이스가 포함되어서는 안 됩니다. 인스턴스에 기존 사용자 데이터가 있으면 마이그레이션 작업 확인이 실패합니다. 자세한 내용은 기존 대상 인스턴스로의 마이그레이션 제한사항을 참조하세요. 필요한 경우 대상 인스턴스에서 기존 데이터를 삭제합니다.
- 대상 인스턴스는
- 데이터베이스 플래그 구성: 대상 PostgreSQL용 Cloud SQL 인스턴스에서
cloudsql.enable_pglogical플래그를 사용 설정합니다. 이 플래그는 논리적 복제에 필요합니다. 플래그 설정에 대한 자세한 내용은 데이터베이스 플래그 구성을 참조하세요. - 데이터베이스 사용자 인증 정보 및 권한: 데이터베이스 및 역할을 관리하는 데 필요한 관리 데이터베이스 사용자 계정 (예: 기본
postgres사용자 또는cloudsqlsuperuser역할이 있는 전용 마이그레이션 사용자)이 대상 인스턴스에 있는지 확인합니다. 표준psql명령어를 사용하거나 Google Cloud 콘솔을 통해 데이터베이스 사용자를 만들고 관리할 수 있습니다. 자세한 내용은 Cloud SQL 문서의 사용자 관리를 참조하세요. - 네트워크 연결 요구사항: 선택한 연결 방법에 따라 소스 데이터베이스와 통신하도록 대상 인스턴스의 네트워킹이 올바르게 구성되었는지 확인합니다.
- Private Service Connect: 대상 인스턴스가 Private Service Connect를 사용하는 경우 Private Service Connect 아웃바운드 네트워크 연결이 구성되어 있어야 합니다. Cloud SQL 문서의 Private Service Connect 아웃바운드 연결을 참조하세요.
- 가상 프라이빗 클라우드 피어링 (비공개 서비스 액세스 / 비공개 IP): 대상 인스턴스에는 소스 데이터베이스와 피어링하거나 라우팅하는 가상 프라이빗 클라우드 네트워크에서 비공개 IP가 사용 설정되어 있어야 합니다. 비공개 IP 구성을 참조하세요.
- 공개 IP 허용 목록: 공개 IP 연결을 사용하는 경우 대상 인스턴스에서 공개 IP를 사용 설정하고 소스 방화벽에서 인스턴스 발신 IP 주소 (인스턴스가 고가용성으로 구성된 경우 기본 및 보조 발신 IP 모두 포함)를 허용 목록에 추가해야 합니다. 공개 IP에 대한 네트워크 승인을 참조하세요.
- 인스턴스 강등 알림:
- 표준 PostgreSQL 마이그레이션의 경우 Database Migration Service는 기존 독립형 대상 인스턴스를 소스 데이터베이스의 외부 복제본으로 구성하기 위해 강등합니다. Google Cloud 콘솔에서 마이그레이션 작업을 만들 때 대상 인스턴스 ID를 입력하여 이 강등을 확인해야 합니다.
- 인스턴스를 강등해도 PostgreSQL용 Cloud SQL 데이터베이스가 읽기 전용 모드로 전환되지 않지만 복제 충돌을 방지하려면 마이그레이션에 참여하는 테이블 또는 데이터베이스에서 쓰기 작업을 피해야 합니다.
- 마이그레이션 작업을 승격할 때까지 자동 백업, PITR (point-in-time recovery), Cloud SQL 읽기 복제본 만들기가 정지됩니다. 자세한 내용은 기존 대상 인스턴스로의 마이그레이션 제한사항을 참조하세요.
- 코드형 인프라(예: Terraform)를 사용하여 대상 인스턴스를 관리하는 경우 Database Migration Service는 마이그레이션 중에 백업 및 복구 설정을 수정합니다. Terraform 구성 드리프트 처리에 대한 안내는 문제 진단을 참조하세요.
마이그레이션 작업 만들기 및 실행
이전을 구성하고 실행하려면 다음 단계를 수행하세요.
- 선택사항: 마이그레이션 작업에 자체 인증서 또는 암호화 키를 관리하려면 필요한 암호화 키를 준비합니다.
-
기존 대상 인스턴스의 마이그레이션 작업을 만들고 실행합니다.
Database Migration Service 관측 가능성 기능을 사용하여 마이그레이션 진행 상황과 대상 인스턴스 상태를 모니터링할 수 있습니다. 마이그레이션 작업 측정항목을 참조하세요.
마이그레이션 완료
애플리케이션을 새 PostgreSQL용 Cloud SQL 인스턴스로 전환하기로 결정한 경우 다음 단계에 따라 마이그레이션을 완료합니다.
- 선택사항: 연쇄 읽기 복제본을 설정합니다. 연쇄 읽기 복제본을 사용하려면 마이그레이션 작업이 CDC 단계에 진입할 때 구성할 수 있습니다.
- 소스 데이터베이스에서 모든 쓰기 작업을 중지합니다. 읽기 전용 모드로 전환하여 운영 기능을 유지할 수 있습니다.
- 마이그레이션 작업 승격
- 선택사항: 이전 데이터의 완전성을 확인합니다.
- 코드형 인프라(예: Terraform)를 사용하여 대상 데이터베이스를 관리하는 경우 승격 후 구성을 다시 적용하여 마이그레이션 중에 Database Migration Service에서 조정한 설정을 조정합니다.
다음 단계
PostgreSQL용 Cloud SQL의 Google Cloud 기능에 대해 자세히 알아보세요. PostgreSQL용 Cloud SQL 기능을 참조하세요.