이 페이지에서는 데이터베이스 서버 버전을 업데이트하기 위한 PostgreSQL용 AlloyDB 프로세스를 자세히 설명하고 이후 버전의 PostgreSQL과 호환되는 클러스터로 데이터를 마이그레이션하는 방법을 설명합니다.
클러스터를 만드는 방법에 대한 자세한 내용은 클러스터 및 기본 인스턴스 만들기를 참고하세요.
클러스터 및 PostgreSQL 버전 호환성
AlloyDB 클러스터를 만들 때 클러스터의 인스턴스와 호환되는 PostgreSQL의 주요 버전을 선택합니다. 기본값은 15입니다.
클러스터의 유지보수 작업 중에 AlloyDB는 마이너 데이터베이스 버전 업그레이드만 실행합니다. 예를 들어 15 호환성을 사용하여 클러스터를 만들면 AlloyDB는 데이터베이스 서버를 사용 가능한 최신 15 버전으로 계속 업그레이드합니다.
AlloyDB에서 자동으로 실행하는 마이너 버전 업그레이드와 달리 메인 버전 업그레이드는 직접 계획, 테스트, 실행해야 합니다. AlloyDB는 인플레이스 주요 데이터베이스 버전 업그레이드를 지원하지 않으므로 이 프로세스에는 한 클러스터에서 다른 클러스터로 데이터를 이전하는 작업이 포함됩니다.
파일 기반 데이터 내보내기로 데이터를 이동하거나 Database Migration Service를 사용하여 주 버전 업그레이드를 실행할 수 있습니다. 각 솔루션은 서로 다른 이점을 제공하며 서로 다른 문제를 야기할 수 있습니다. 다음 표에서 시나리오에 적합한 접근 방식을 선택하는 데 도움이 되는 간단한 비교를 확인하세요.
파일 기반 데이터 내보내기 | Database Migration Service를 통한 이전 |
---|---|
파일 기반 내보내기는 데이터베이스의 일회성 스냅샷을 이동합니다. | Database Migration Service는 마이그레이션 프로세스 중에 연속 복제 기능을 제공하므로 새 클러스터에서 데이터가 누락될 가능성이 줄어듭니다. |
데이터를 내보낼 때 시작되는 애플리케이션의 다운타임이 길어집니다. 새 클러스터가 완전히 작동할 때까지 원래 클러스터에서 데이터베이스 쓰기를 수락할 수 없습니다. | 애플리케이션이 새 클러스터를 사용하도록 전환하려고 할 때 시작되는 애플리케이션 다운타임이 줄어듭니다. |
내보내기에 포함할 데이터를 더 세부적으로 제어할 수 있으며 특정 테이블이나 기타 항목을 이전하지 않도록 선택할 수 있습니다. | Database Migration Service는 인스턴스에 있는 모든 데이터베이스와 클러스터의 모든 인스턴스를 자동으로 마이그레이션합니다. 이전 데이터에서 특정 테이블이나 뷰를 제외하도록 선택할 수는 없습니다. |
클러스터에 SSL 시행 모드가 사용 설정되어 있을 수 있습니다. | 마이그레이션을 위해 Database Migration Service에서는 소스 클러스터에서 SSL 시행 모드를 사용 중지해야 합니다. |
다음 섹션에서는 데이터 이전을 비롯한 주 버전 업그레이드 수행 프로세스를 자세히 설명합니다.
파일 기반 데이터 내보내기를 사용하여 이전
상위 PostgreSQL 주요 버전과 호환되는 데이터베이스 서버를 사용하려면 동일한 리전에 기능적으로 동일한 클러스터를 만든 다음 데이터를 클러스터로 이전해야 합니다.
다음 단계를 따르세요.
사용하려는 PostgreSQL 호환성의 주요 버전으로 구성된 클러스터를 만듭니다. 현재 클러스터와 동일한 리전에 클러스터를 만듭니다.
현재 클러스터의 구성과 일치하도록 새 주 버전으로 새 클러스터를 설정합니다.
-
보조 클러스터를 만들 때는 PostgreSQL 주 버전 번호를 지정할 필요가 없습니다. AlloyDB는 기본 클러스터의 PostgreSQL 버전을 모든 보조 클러스터에 적용합니다.
현재 클러스터의 플래그 설정과 일치하도록 새 클러스터의 데이터베이스 플래그를 업데이트합니다.
이제 애플리케이션이 새 IP 주소로 새 클러스터의 인스턴스에 연결할 수 있습니다.
Database Migration Service를 사용하여 마이그레이션
Database Migration Service를 사용하여 PostgreSQL 데이터베이스에서 AlloyDB 클러스터로 데이터를 이동할 수 있습니다. Database Migration Service는 AlloyDB 데이터 소스에만 전용 구성을 제공하지는 않지만 AlloyDB는 PostgreSQL과 호환되므로 일반 PostgreSQL 소스에 사용되는 구성을 사용할 수 있습니다.
이 이전 경로는 인플레이스 업그레이드가 아니며 다른 IP 주소를 가진 새 클러스터가 생성됩니다. 먼저 클러스터를 클론하고 테스트 마이그레이션을 실행하여 애플리케이션이 이 접근 방식과 호환되는지 확인하는 것이 좋습니다.
중요 고려사항
Database Migration Service로 마이그레이션할 준비를 하기 전에 다음 제한사항을 신중하게 고려하여 이 마이그레이션 경로가 업그레이드 시나리오에 적합한지 확인하세요.
- 제한사항
-
- 소스 클러스터에서 SSL 연결을 사용 중지해야 합니다.
- Private Service Connect로 구성된 AlloyDB 인스턴스는 지원되지 않습니다.
- 이전 중에 소스 클러스터에서 인스턴스 업데이트 또는 장애 조치 요청을 실행할 수 없습니다. 이러한 작업으로 인해 이전 작업이 실패할 수 있습니다.
- PostgreSQL에서 AlloyDB로의 마이그레이션에 적용되는 모든 표준 제한사항이 이 시나리오에도 적용됩니다. 기타 제한사항의 전체 목록은 Database Migration Service 문서의 알려진 제한사항을 참고하세요.
- 마이그레이션 충실도
- 대형 객체와 같은 특정 데이터 유형은 이전되지 않습니다. 지원되는 데이터의 전체 목록은 Database Migration Service 문서의 이전 충실도를 참고하세요.
- 소스 데이터베이스 잠김 및 다운타임
-
Database Migration Service는 지속적인 마이그레이션을 사용하여 데이터를 AlloyDB 클러스터로 이동합니다. 이 유형의 이전은 초기 데이터 덤프가 생성될 때 소스 데이터베이스 테이블에 한 번에 하나씩 짧은(10초 미만) 잠금이 발생합니다.
마이그레이션이 완료되면 애플리케이션을 새 클러스터로 전환하기 전에 소스 데이터베이스의 모든 쓰기를 중지해야 합니다. 이 절차에는 다운타임이 발생합니다. 자세한 개요는 Database Migration Service 문서의 연속 마이그레이션을 참고하세요.
- 복제 제한사항
-
마이그레이션 작업이 변경 데이터 캡처 (CDC) 단계로 이동하면 Database Migration Service는 소스 데이터베이스에 작성된 새 데이터를 지속적으로 복제합니다.
기본 키가 없는 테이블의 경우 CDC 단계에서
INSERT
문만 복제됩니다. CDC 단계에서 기본 키가 없는 테이블에 대해 실행된CREATE
,UPDATE
또는DELETE
작업은 데이터 손실을 방지하기 위해 대상 데이터베이스에서 수동으로 다시 만들어야 합니다.
시작하기 전에
-
Enable the Database Migration Service API.
-
Make sure that you have the following role or roles on the project:
- One of the following:
- Cloud AlloyDB > Cloud AlloyDB admin
- Basic > Owner
- Basic > Editor
- You must also have the
compute.networks.list
permission in the Google Cloud project you are using. To gain this permission while following the principle of least privilege, ask your administrator to grant you the Compute Engine > Compute Network User role (roles/compute.networkUser
). - Database Migration admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
IAM으로 이동 - 프로젝트를 선택합니다.
- 액세스 권한 부여를 클릭합니다.
-
새 주 구성원 필드에 사용자 식별자를 입력합니다. 일반적으로 Google 계정의 이메일 주소입니다.
- 역할 선택 목록에서 역할을 선택합니다.
- 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
- 저장을 클릭합니다.
- 사용 중인 Google Cloud 프로젝트의 VPC 네트워크가 AlloyDB에 대한 비공개 서비스 액세스를 위해 구성되어 있는지 확인합니다.
- 대상 클러스터를 만들 리전을 결정합니다. 모든 Database Migration Service 항목 (연결 프로필, 마이그레이션 작업)은 대상 클러스터와 동일한 리전에 만들어야 합니다.
- 클러스터에 연결하고 소스 데이터베이스에서 이전 문을 실행할 데이터베이스 사용자를 준비합니다. 이 데이터베이스 사용자에게는 특정 권한 및 역할이 필요합니다. 새 데이터베이스 사용자를 만들고 마이그레이션을 실행하기 위한 용도로만 지정하는 것이 좋습니다.
소스 인스턴스 구성
Database Migration Service를 소스 클러스터에서 새 대상 클러스터로 연결하고 데이터를 복사하려면 특정 구성이 필요합니다.
AlloyDB 소스 인스턴스를 구성하려면 다음 단계를 따르세요.
-
소스 클러스터의 모든 인스턴스에서
데이터베이스 플래그를 구성합니다.
다음 값을 사용합니다.
플래그 값 alloydb.logical_decoding
on
로 설정합니다.alloydb.enable_pglogical
on
로 설정합니다.max_replication_slots
이 플래그는 소스 인스턴스가 지원할 수 있는 최대 복제 슬롯 수를 정의합니다. 이 플래그의 최솟값은 50
입니다.다음 수식을 사용하여 최솟값을 계산합니다.
(the number of databases in your instance) * (the number of simultaneous migration jobs you want to perform) + (slots reserved for table synchronization) + (the number of replication slots you currently use for your read replicas)
다음이 모두 참인 예를 생각해 보세요.
- 소스에 읽기 복제본이 없습니다.
- 기본 소스 인스턴스에 데이터베이스가 30개 있습니다.
- 소스 클러스터에 마이그레이션 작업 2개를 만들려고 합니다.
- 테이블 복제에 10개의 슬롯을 사용하려 합니다.
max_replication_slots
수는30 * 2 + 10 + 0
로 계산된70
이상이어야 합니다.max_wal_senders
이 플래그를 max_replication_slots
값과 인스턴스에서 이미 사용한 발신자 수를 합한 값보다 10 이상 크게 설정합니다.예를 들어
max_replication_slots flag
를70
로 설정하고 이미 발신자를 2개 사용 중인 경우max_wal_senders
는82
이상이어야 합니다(70 + 10 + 2 = 82
으로 계산됨).max_worker_processes
이 플래그를 인스턴스의 데이터베이스 수와 이미 사용 중인 max_worker_processes
수를 합한 값 이상으로 설정합니다.예를 들어 소스 인스턴스에 데이터베이스가 30개 있고 작업자 프로세스를 사용하지 않는 경우 이 플래그를
30
로 설정합니다. - 소스 클러스터의 모든 인스턴스에서 SSL 시행 모드를 사용 중지합니다.
소스 데이터베이스 구성
pglogical
확장 프로그램을 설치하고 인스턴스의 모든 데이터베이스에서 마이그레이션 사용자로 지정한 데이터베이스 사용자에게 필요한 권한을 부여해야 합니다.데이터베이스를 구성하려면 다음 단계를 따르세요.
psql
클라이언트를 사용하여 기본postgres
데이터베이스에 연결합니다.다음 명령어를 실행하여
pglogical
확장 프로그램을 설치합니다.CREATE EXTENSION IF NOT EXISTS pglogical;
information
스키마 및 이름이pg_
접두사로 시작하는 스키마 를 제외한 모든 스키마에 대한 권한을 마이그레이션 데이터베이스 사용자에게 부여합니다. 다음 문을 실행합니다.GRANT USAGE on SCHEMA SCHEMA_NAME to USER_NAME; GRANT SELECT on ALL TABLES in SCHEMA SCHEMA_NAME to USER_NAME; GRANT SELECT on ALL SEQUENCES in SCHEMA SCHEMA_NAME to USER_NAME;
다음을 바꿉니다.
- SCHEMA_NAME: 데이터베이스에 있는 스키마의 이름
- USER_NAME: 시작하기 전에 섹션에서 준비한 데이터베이스 사용자의 이름입니다.
information
스키마와 이름이pg_
접두사로 시작하는 스키마를 제외한 데이터베이스의 모든 스키마에 대해 이 단계를 반복합니다. \dn 메타 명령어를 사용하여 모든 데이터베이스 스키마를 나열할 수 있습니다.나머지 필수 권한을 부여합니다. 다음 문을 실행합니다.
GRANT USAGE on SCHEMA pglogical to PUBLIC; GRANT SELECT on ALL TABLES in SCHEMA pglogical to USER_NAME; ALTER USER USER_NAME with REPLICATION;
USER_NAME를 시작하기 전 섹션에서 준비한 데이터베이스 사용자 이름으로 바꿉니다.
인스턴스의 다른 모든 데이터베이스에 연결하고 2, 3, 4단계를 반복합니다.
\list
메타 명령어를 사용하여 인스턴스의 모든 데이터베이스를 나열할 수 있습니다.\connect {database_name_here}
명령어를 사용하여psql
클라이언트 연결을 재설정하지 않고도 다른 데이터베이스로 전환할 수 있습니다.
소스 AlloyDB 클러스터의 모든 인스턴스에 대해 이 절차를 반복합니다.
Database Migration Service에서 마이그레이션 실행
다음 단계를 따르세요.
AlloyDB 클러스터에 소스 연결 프로필을 만듭니다. 다음 값을 사용합니다.
- 데이터베이스 엔진: PostgreSQL을 선택합니다.
- 호스트 이름/IP: 클러스터의 기본 인스턴스의 IP 주소를 사용합니다.
- 사용자 이름/비밀번호: 시작하기 전 섹션에서 준비한 데이터베이스 사용자의 사용자 인증 정보를 입력합니다.
- 포트:
5432
를 입력합니다. - 리전: 대상 클러스터가 있는 리전을 선택합니다.
- 암호화 유형: 없음을 선택합니다.
마이그레이션 작업을 만들고 실행합니다.
새 AlloyDB 클러스터를 미리 만들거나 마이그레이션 작업 구성 중에 Database Migration Service에서 클러스터를 만들어 달라고 요청할 수 있습니다. 자세한 내용은 Database Migration Service 문서의 마이그레이션 작업 개요를 참고하세요.
마이그레이션 작업 구성 중에 Database Migration Service에서 대상 클러스터를 만들도록 하려면 새 대상 인스턴스로의 마이그레이션 작업 만들기 절차의 단계를 따르세요.
Database Migration Service 외부에서 대상 클러스터를 만들려면 기존 대상 인스턴스로의 마이그레이션 작업 만들기 절차의 단계를 따르세요.
마이그레이션 작업 상태가 CDC로 변경되면 마이그레이션 작업을 승격합니다. 마이그레이션 개요 페이지에서 마이그레이션 작업 상태를 확인할 수 있습니다. Database Migration Service 문서에서 마이그레이션 작업 검토를 참고하세요.
이 작업을 실행하면 대상 클러스터가 부트스트랩 모드를 종료합니다. 즉, 대상 AlloyDB 클러스터가 더 이상 읽기 전용 상태가 아닙니다.
(선택사항) 기본 키가 없는 테이블에서 누락된 문이 있는지 확인합니다.
소스 AlloyDB 데이터베이스에 기본 키가 없는 테이블이 포함된 경우 누락된
UPDATE
또는DELETE
문을 수동으로 마이그레이션해야 할 수 있습니다. Database Migration Service 문서의 비기본 키 테이블의 UPDATE 및 DELETE 작업 마이그레이션을 참고하세요.애플리케이션을 새 클러스터로 전환합니다. 이제 애플리케이션이 새 IP 주소로 새 클러스터의 인스턴스에 연결할 수 있습니다.
- One of the following: