알려진 제한사항

데이터베이스를 Cloud SQL로 마이그레이션하기 전에 이 마이그레이션 시나리오의 알려진 제한사항을 고려해야 합니다.

PostgreSQL 데이터베이스를 소스로 사용할 경우의 알려진 제한사항은 다음과 같습니다.

  • pglogical 확장 프로그램은 PostgreSQL 12 이상의 생성된 열 복제를 지원하지 않습니다.

  • 테이블 구조 (DDL)의 변경사항은 표준 DDL 명령어를 통해 복제되지 않으며 복제에 사용되는 pglogical 확장 프로그램을 사용하여 실행되는 명령어로만 복제됩니다. 여기에는 enum 유형 변경이 포함됩니다.

    • 예를 들어 pglogical는 일관된 지점에서 소스 데이터베이스와 복제본 모두에서 DDL을 실행할 수 있는 pglogical.replicate_ddl_command 함수를 제공합니다.
    • 새로 만든 테이블의 데이터를 복제하려면 pglogical.replication_set_add_table 명령어를 사용하여 기존 복제 세트에 새 테이블을 추가해야 합니다.
    • 마이그레이션이 진행되는 동안 DDL 복제에 대해 자세히 알아보려면 마이그레이션 충실도를 참조하세요.
  • 기본 키가 없는 테이블의 경우 Database Migration Service가 변경 데이터 캡처 (CDC) 단계 중에 초기 스냅샷과 INSERT 문의 마이그레이션을 지원합니다. UPDATE 및 DELETE 문 마이그레이션은 다음에 따라 다릅니다.

    • 표준 마이그레이션: 기본 키가 없는 테이블의 경우 UPDATE 및 DELETE 문이 마이그레이션되지 않습니다. 마이그레이션하기 전에 열의 기본 키를 추가하거나 UPDATE 및 DELETE 문을 수동으로 마이그레이션해야 합니다.
    • 빠른 시작 마이그레이션: 빠른 시작 마이그레이션에서는 복제본 ID를 INDEX 또는 FULL로 설정하는 경우 UPDATE 및 DELETE 작업을 복제하는 데 기본 키가 필요하지 않습니다. REPLICA IDENTITY FULL를 구성하면 미리 쓰기 로그 (WAL) 볼륨과 리소스 오버헤드가 증가합니다. 가능한 경우 기본 키를 추가하는 것이 좋습니다. 자세한 내용은 PostgreSQL 복제본 ID 문서 및 빠른 시작 이전 가이드를 참조하세요.
  • Database Migration Service는 구체화된 뷰에서 데이터를 마이그레이션하지 않고 뷰 스키마만 마이그레이션합니다. 대상 데이터베이스에서 뷰를 채우려면 REFRESH MATERIALIZED VIEW view_name을 실행합니다.

  • 진행 중인 CDC 중에 대상의 SEQUENCE 상태 (예: last_value)가 소스와 다를 수 있습니다. 시퀀스 값은 최종 승격 단계에서 동기화됩니다.

  • UNLOGGED 및 TEMPORARY 테이블은 복제되지 않으며 복제할 수 없습니다.

  • 대규모 객체 데이터 유형 (pg_largeobject를 참조하는 oid)은 PostgreSQL 논리적 디코딩에서 지원되지 않습니다.

  • Cloud SQL에서 PostgreSQL에 지원하는 확장 프로그램만 마이그레이션할 수 있습니다. Database Migration Service는 Cloud SQL에서 지원하지 않는 확장 프로그램을 마이그레이션하지 않습니다. 이러한 확장 프로그램이 있어도 마이그레이션이 차단되지는 않지만 원활한 마이그레이션을 위해 애플리케이션이 지원되지 않는 확장 프로그램을 참조하지 않는지 확인하세요. 지원되는 확장 프로그램 목록은 Cloud SQL 문서의 PostgreSQL 확장 프로그램을 참조하세요.

  • pg_cron 확장 프로그램 (또는 확장 프로그램 내에 구성된 크론 작업)은 Database Migration Service에서 마이그레이션되지 않지만 PostgreSQL용 Cloud SQL 대상에서 지원됩니다. 소스 데이터베이스에서 pg_cron를 사용하는 경우 마이그레이션이 완료된 후 대상 인스턴스에서 확장 프로그램을 다시 설치하고 크론 작업을 구성합니다.

  • Database Migration Service는 복구 모드에 있는 읽기 복제본에서의 마이그레이션을 지원하지 않습니다.

  • Database Migration Service는 AWS SCT 확장 프로그램 팩이 적용된 Amazon RDS 소스를 지원하지 않습니다.

  • C로 작성된 사용자 정의 함수는 Cloud SQL에서 지원하는 확장 프로그램을 만들 때 설치되는 함수를 제외하고 마이그레이션할 수 없습니다.

  • 소스 데이터베이스에 다른 확장 프로그램이 있고 해당 버전이 Cloud SQL에서 지원되지 않는 경우 마이그레이션 작업을 테스트하거나 시작할 수 없습니다.

  • 마이그레이션 작업이 시작된 후 소스 인스턴스에 추가된 데이터베이스는 마이그레이션되지 않습니다.

  • Database Migration Service를 사용하여 마이그레이션할 때 특정 데이터베이스를 선택할 수 있습니다. 선택한 데이터베이스의 모든 테이블과 스키마가 마이그레이션됩니다. 단, 다음은 제외됩니다.

    • 정보 스키마 (information_schema)입니다.
    • pg_로 시작하는 모든 스키마 (예: pg_catalog, pg_toast, pgtemp*). pg_로 시작하는 PostgreSQL 카탈로그의 전체 목록은 PostgreSQL 문서의 PostgreSQL 시스템 카탈로그를 참조하세요.
    • 사용자 로그인 사용자 인증 정보 및 역할
  • 암호화된 데이터베이스에서 데이터를 복호화하기 위해 고객 관리 암호화 키 (CMEK)가 필요하고 Database Migration Service에 키에 대한 액세스 권한이 없으면 데이터베이스를 마이그레이션할 수 없습니다. 하지만 Cloud SQL은 pgcrypto를 지원하므로 pgcrypto 확장 프로그램으로 암호화된 데이터는 마이그레이션할 수 있습니다. Database Migration Service는 AWS가 복호화를 투명하게 처리하므로 암호화된 Amazon Aurora 또는 Amazon RDS 데이터베이스에서의 마이그레이션도 지원합니다. 자세한 내용은 Amazon Aurora 리소스 암호화 및 Amazon RDS 리소스 암호화를 참조하세요.

  • 마이그레이션 중 대상 데이터베이스 운영 동작:

    • 쓰기 가능한 대상 데이터베이스: PostgreSQL용 Cloud SQL은 마이그레이션 중에 대상 데이터베이스를 읽기 전용 모드로 실행하지 않습니다. Database Migration Service에서 만든 대상 인스턴스는 강등되지 않습니다.

    • 데이터 마이그레이션 시 쓰기 작업 방지: 마이그레이션에 참여하는 테이블 또는 데이터베이스에서 쓰기 작업(예: INSERT, UPDATE, DELETE 또는 DDL 스키마 변경)을 수행하지 마세요. 마이그레이션 데이터에 쓰기를 실행하면 수신 변경 데이터 캡처 (CDC) 스트림과 복제 충돌이 발생할 수 있습니다.

    • 데이터베이스 사용자 관리: 표준 psql 명령어를 사용하거나 Google Cloud 콘솔의 Cloud SQL을 통해 언제든지 데이터베이스 사용자를 만들고 관리할 수 있습니다. 자세한 내용은 Cloud SQL 문서의 사용자 관리를 참조하세요.

    • 정지된 기능: 연속 복제 중에는 자동 백업 및 PITR (point-in-time recovery)이 정지됩니다. 또한 마이그레이션 작업이 승격될 때까지 대상 인스턴스에서 Cloud SQL 읽기 복제본을 만들 수 없습니다.

  • 트리거 동작은 트리거 구성에 따라 달라집니다. 기본적으로 트리거는 ALTER EVENT TRIGGER 또는 ALTER TABLE ... ENABLE ALWAYS TRIGGER로 구성되지 않는 한 복제 중에 복제본에서 실행되지 않습니다.

  • SECURITY DEFINER로 정의된 함수는 승격된 권한을 보유한 대상 Cloud SQL 인스턴스에서 cloudsqlexternalsync에 의해 생성됩니다. 공개 권한을 취소하고 액세스 권한을 선택적으로 부여하여 민감한 SECURITY DEFINER 함수에 대한 실행 권한을 제한합니다.

  • Cloud SQL은 커스텀 테이블스페이스를 지원하지 않습니다. 커스텀 테이블스페이스 내의 모든 객체는 Cloud SQL의 기본 pg_default 테이블스페이스로 마이그레이션됩니다.

  • Private Service Connect 인터페이스 연결 방법은 기존 대상 인스턴스로 마이그레이션하는 경우에만 지원됩니다. 비공개 IP 연결을 사용하고 새 대상 인스턴스로 마이그레이션하려면 VPC 피어링을 사용합니다.

기존 대상 인스턴스로의 마이그레이션 제한사항

  • 표준 마이그레이션을 위한 대상 인스턴스 강등: 기존 Cloud SQL 인스턴스로의 표준 마이그레이션의 경우 Database Migration Service는 독립형 인스턴스를 강등하여 소스 데이터베이스의 외부 복제본으로 구성합니다.
    • 인스턴스를 강등해도 PostgreSQL 엔진이 읽기 전용 모드로 전환되지 않지만 복제 충돌을 방지하려면 테이블 마이그레이션 시 쓰기 작업을 피해야 합니다.
    • 인스턴스를 강등하면 자동 백업 및 PITR (point-in-time recovery)이 정지되고 승격될 때까지 Cloud SQL 읽기 복제본을 추가할 수 없습니다.
    • Google Cloud 콘솔에서 마이그레이션 작업을 만들 때 대상 인스턴스 ID를 입력하거나 gcloud database-migration migration-jobs demote-destination를 실행하여 강등을 확인해야 합니다.
    • 빠른 시작 마이그레이션은 PostgreSQL pgnative 논리적 복제를 사용하며 대상 인스턴스 강등을 요구하거나 수행하지 않습니다.
  • 기존 대상 인스턴스에는 대상 인스턴스를 만들 때 자동으로 설정되는 기본 시스템 데이터베이스만 포함될 수 있습니다. 사용자 데이터가 포함된 기존 대상 인스턴스로의 이전은 지원되지 않습니다.

    기존 대상 인스턴스의 추가 데이터로 인해 문제가 발생하는 경우 대상 인스턴스의 데이터베이스를 지우고 마이그레이션 작업을 다시 시도합니다. 기존 대상 인스턴스에서 추가 데이터 삭제를 참조하세요.

  • 대상 인스턴스당 하나의 마이그레이션 작업만 구성할 수 있습니다.
  • 독립형 Cloud SQL 인스턴스로만 마이그레이션할 수 있습니다. 외부 서버 복제본으로의 마이그레이션은 지원되지 않습니다.
  • 인스턴스를 승격한 후에는 PITR(point-in-time recovery)을 사용 설정해야 합니다.
  • 인스턴스에 맞춤설정된 백업 설정 (예: 커스텀 백업 위치)이 있으면 승격 후 백업 설정을 다시 복원해야 합니다. 승격 프로세스가 진행되는 동안 Cloud SQL에서 백업 설정을 기본값으로 재설정합니다.
  • Terraform 사용자: Database Migration Service는 대상 인스턴스의 백업 및 복구 설정을 수정합니다. 이로 인해 대상 인스턴스 설정이 프로비저닝에 사용된 Terraform 구성과 다를 수 있습니다. 이 문제가 발생하면 문제 진단의 안내를 참고하세요.

할당량

  • 어느 시점에든지 최대 2,000개의 연결 프로필과 1,000개의 마이그레이션 작업이 존재할 수 있습니다. 공간을 더 확보하려면 사용하지 않는 마이그레이션 작업과 연결 프로필을 삭제하세요.

메이저 버전 업그레이드 중 PostgreSQL 확장 프로그램 버전 호환성

더 높은 PostgreSQL 메이저 버전으로 마이그레이션할 때 Database Migration Service는 대상 PostgreSQL 메이저 버전의 기본 확장 프로그램 버전을 설치하는 pg_restore 유틸리티를 사용합니다. pg_restore 유틸리티의 정확한 확장 프로그램 버전을 지정할 수 없습니다.

소스 데이터베이스에서 대상 PostgreSQL 메이저 버전에 설치된 기본 버전과 스키마가 호환되지 않는 확장 프로그램 버전을 사용하는 경우 스키마 불일치 또는 내부 오류로 인해 마이그레이션이 실패할 수 있습니다.

이전 실패를 방지하려면 스키마 호환성을 확인하세요. 마이그레이션하기 전에 소스 데이터베이스의 확장 프로그램을 대상 PostgreSQL 메이저 버전과 호환되는 버전으로 업그레이드하세요.