연속 마이그레이션을 위한 소스 PostgreSQL 데이터베이스 구성

이 페이지에서는 표준 동종 PostgreSQL 마이그레이션을 위해 소스 데이터베이스 인스턴스를 구성하는 방법을 설명합니다. 빠른 시작 이전을 사용하려면 빠른 시작 이전 사용 가이드를 따르세요. 빠른 시작 마이그레이션은 pgnative 복제와 Private Service Connect 인터페이스를 기반으로 하는 특수 연결을 사용하는 간소화된 마이그레이션 흐름을 제공합니다. 자세한 내용은 기본 Database Migration Service 문서의 빠른 시작 마이그레이션 정보를 참조하세요.

이 페이지에는 지원되는 모든 소스에 대한 섹션이 포함되어 있습니다.

자체 관리형 PostgreSQL 소스 구성

마이그레이션 프로세스에 자체 관리형 PostgreSQL 소스 인스턴스 (온프레미스 또는 Compute Engine VM에서 호스팅)를 구성하려면 다음을 수행하세요.

  1. 자체 관리형 PostgreSQL 소스의 경우 Database Migration Service는 템플릿 데이터베이스 template0 및 template1를 제외한 소스 인스턴스의 모든 데이터베이스를 마이그레이션합니다.
  2. 소스 인스턴스에 기본 postgres 데이터베이스가 포함되어 있는지 확인합니다. 이 데이터베이스가 없으면 마이그레이션을 구성하기 전에 만듭니다.
  3. pg_hba.conf 파일에서 네트워크 클라이언트 인증을 구성합니다. 대상 Cloud SQL 아웃바운드 IP 주소, VPC CIDR 범위 또는 역방향 SSH 배스천 호스트에서 복제 연결 및 데이터베이스 액세스를 허용하는 항목을 추가합니다.
    # Allow replication connections
    host  replication  MIGRATION_USER_ACCOUNT_NAME  DESTINATION_IP_OR_CIDR  md5
    # Allow database access
    host  all          MIGRATION_USER_ACCOUNT_NAME  DESTINATION_IP_OR_CIDR  md5

    PostgreSQL 구성을 새로고침하여 pg_hba.conf 규칙을 적용합니다.

    SELECT pg_reload_conf();
  4. 소스 데이터베이스에 설치된 PostgreSQL 확장 프로그램을 확인합니다. Database Migration Service는 Cloud SQL에서 지원되지 않는 확장 프로그램을 마이그레이션하지 않습니다. 소스 데이터베이스 객체 및 애플리케이션 쿼리가 지원되지 않는 확장 프로그램을 참조하지 않는지 확인합니다. 계속하기 전에 소스 데이터베이스에서 지원되지 않는 확장 프로그램과 참조를 삭제하세요.

    pg_cron 확장 프로그램은 Database Migration Service에서 자동으로 마이그레이션되지 않지만 PostgreSQL용 Cloud SQL 대상에서 지원됩니다. 소스 데이터베이스에서 pg_cron를 사용하는 경우 마이그레이션을 승격한 후 대상 인스턴스에 다시 설치하고 구성합니다.

  5. 소스 인스턴스에 전용 마이그레이션 사용자 계정을 만들고 필요한 권한을 부여합니다.
    1. 관리 계정을 사용하여 소스 인스턴스에 연결하고 사용자를 만들고 복제 역할을 할당합니다.
      CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD';
      ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH REPLICATION;
    2. 마이그레이션 사용자 계정에 기본 postgres 데이터베이스와 마이그레이션하려는 모든 데이터베이스에 필요한 권한을 부여합니다. 각 데이터베이스에서 각 스키마 (정보 스키마 및 pg_로 시작하는 스키마 제외)에 대해 다음 명령어를 실행합니다.
      GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT USAGE ON SCHEMA pglogical TO PUBLIC;
      GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
  6. template0 및 template1를 제외하고 마이그레이션할 각 데이터베이스에 pglogical 확장 프로그램을 설치합니다.
    • PostgreSQL 버전 9.4: 다음 명령어를 실행합니다.
      CREATE EXTENSION IF NOT EXISTS pglogical;
      CREATE EXTENSION IF NOT EXISTS pglogical_origin;
    • PostgreSQL 버전 9.5 이상: 다음 명령어를 실행합니다.
      CREATE EXTENSION IF NOT EXISTS pglogical;
  7. 테이블에 기본 키가 있는지 확인합니다. 연속 마이그레이션의 경우 PostgreSQL 논리적 복제를 수행하려면 변경 데이터 캡처 (CDC) 단계에서 UPDATE 및 DELETE 작업을 복제하기 위해 테이블에 기본 키가 있어야 합니다.
    • 기본 키가 있는 테이블은 모든 INSERT, UPDATE, DELETE 작업을 자동으로 복제합니다.
    • 기본 키가 없는 테이블의 경우 Database Migration Service는 CDC 단계 중에 초기 스냅샷과 후속 INSERT 문의 마이그레이션만 지원합니다. UPDATE 및 DELETE 문을 수동으로 마이그레이션해야 합니다.

      마이그레이션을 시작하기 전에 기본 키가 없는 테이블에 기본 키를 추가하는 것이 좋습니다. 기본 키 없이 PostgreSQL 데이터베이스의 테이블을 나열하는 쿼리를 생성하는 방법 또는 UPDATE 및 DELETE 작업을 수동으로 마이그레이션하는 방법은 디버깅 및 기타 도구를 참조하세요.

      또는 빠른 시작 마이그레이션 흐름을 사용할 수 있습니다. 이 흐름은 REPLICA IDENTITY를 사용하여 기본 키가 없는 테이블을 마이그레이션할 수 있는 간소화된 마이그레이션 시나리오입니다. 자세한 내용은 빠른 시작 마이그레이션 사용 가이드를 참조하세요.

  8. PostgreSQL 버전 9.5 이하를 실행하는 소스: PostgreSQL 버전 9.6 이하를 실행하는 소스 인스턴스에는 복제 지연 측정항목을 사용할 수 없습니다. 이 측정항목을 사용하여 마이그레이션 진행 상황을 추적하려면 복제 지연 사용 설정을 참조하세요.
  9. pglogical 패키지를 설치하고 PostgreSQL 서버에서 WAL 및 복제 매개변수를 구성합니다.
    1. 데이터베이스 서버 호스트 운영체제에 pglogical 패키지를 설치합니다. 배포판의 패키지 및 설치 안내는 pglogical GitHub 저장소를 참조하세요.
    2. 관리 계정을 사용하여 PostgreSQL 인스턴스에 연결하고 다음 매개변수를 설정합니다.
      1. shared_preload_libraries를 'pglogical'를 포함하도록 설정합니다.
        ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
      2. wal_level를 'logical'로 설정합니다.
        ALTER SYSTEM SET wal_level = 'logical';

        PostgreSQL 문서의 wal_level를 참조하세요.

      3. wal_sender_timeout를 0로 설정합니다.
        ALTER SYSTEM SET wal_sender_timeout = 0;

        0 값은 비활성 복제 연결을 종료하는 제한 시간 메커니즘을 중지합니다. wal_sender_timeout을 참조하세요.

      4. max_replication_slots를 최소한 마이그레이션할 데이터베이스 수에 마이그레이션 작업 수를 곱한 값에 테이블 동기화를 위한 비축분을 더한 값으로 설정합니다.

        예를 들어 소스 인스턴스에 5개의 데이터베이스가 있고 해당 소스에 대한 2개의 마이그레이션 작업을 만드는 경우 복제 슬롯 수는 5 * 2 = 10개 이상을 이미 소스에서 다른 태스크에 사용 중인 복제 슬롯 수와 합한 값이어야 합니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 마이그레이션 작업을 만들 때 복제 슬롯 수를 늘리고 마이그레이션 작업 테스트를 실행하여 구성을 확인해야 합니다.

        ALTER SYSTEM SET max_replication_slots = MAX_REPLICATION_SLOTS;

        이 매개변수의 기본값은 10입니다. max_replication_slots를 참고하세요.

      5. max_wal_senders를 최소한 max_replication_slots 값에 인스턴스에서 이미 사용한 발신자 수를 더한 값으로 설정합니다.

        예를 들어 max_replication_slots 파라미터가 10으로 설정되어 있고 이미 발신자 2개를 사용 중인 경우 동시에 실행되는 WAL 발신자 프로세스 수는 10+2 = 12개입니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 마이그레이션 작업을 만들 때 발신자 수를 늘리고 마이그레이션 작업 테스트를 실행하여 구성을 확인해야 합니다.

        ALTER SYSTEM SET max_wal_senders = MAX_WAL_SENDERS;

        이 매개변수의 기본값은 10입니다. max_wal_senders를 참고하세요.

      6. max_worker_processes를 마이그레이션할 데이터베이스 수에 인스턴스의 기존 작업자 프로세스를 더한 값 이상으로 설정합니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 연결당 추가 작업자 프로세스 2개(최대 20개 작업자)를 고려하세요.
        ALTER SYSTEM SET max_worker_processes = MAX_WORKER_PROCESSES;

        이 매개변수의 기본값은 8입니다. max_worker_processes를 참고하세요.

  10. 구성 변경사항이 적용되도록 PostgreSQL 서버를 다시 시작합니다.

PostgreSQL용 Amazon RDS 소스 구성

마이그레이션 프로세스에 PostgreSQL용 Amazon RDS 소스 인스턴스를 구성하려면 다음을 수행하세요.

  1. PostgreSQL용 Amazon RDS 소스의 경우 Database Migration Service는 템플릿 데이터베이스 template0, template1, AWS 내부 데이터베이스 rdsadmin를 제외한 소스 인스턴스의 모든 데이터베이스를 마이그레이션합니다.
  2. 소스 인스턴스에 기본 postgres 데이터베이스가 포함되어 있는지 확인합니다. 이 데이터베이스가 없으면 마이그레이션을 구성하기 전에 만듭니다.
  3. Amazon RDS VPC 보안 그룹 인바운드 규칙을 구성합니다. 대상 Cloud SQL 아웃바운드 IP 주소, VPC CIDR 범위 또는 역방향 SSH 배스천 호스트 VM에서 포트 5432의 수신 TCP 연결을 허용합니다.
  4. 소스 데이터베이스에 설치된 PostgreSQL 확장 프로그램을 확인합니다. Database Migration Service는 Cloud SQL에서 지원되지 않는 확장 프로그램을 마이그레이션하지 않습니다. 소스 데이터베이스 객체 및 애플리케이션 쿼리가 지원되지 않는 확장 프로그램을 참조하지 않는지 확인합니다. 계속하기 전에 소스 데이터베이스에서 지원되지 않는 확장 프로그램과 참조를 삭제하세요.

    pg_cron 확장 프로그램은 Database Migration Service에서 자동으로 마이그레이션되지 않지만 PostgreSQL용 Cloud SQL 대상에서 지원됩니다. 소스 데이터베이스에서 pg_cron를 사용하는 경우 마이그레이션을 승격한 후 대상 인스턴스에 다시 설치하고 구성합니다.

  5. 소스 인스턴스에 전용 마이그레이션 사용자 계정을 만들고 필요한 권한을 부여합니다.
    1. 관리 계정을 사용하여 소스 인스턴스에 연결하고 사용자를 만들고 AWS 관리형 rds_replication 역할을 부여합니다.
      CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD';
      GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
    2. 마이그레이션 사용자 계정에 기본 postgres 데이터베이스와 마이그레이션하려는 모든 데이터베이스에 필요한 권한을 부여합니다. 각 데이터베이스에서 각 스키마 (정보 스키마 및 pg_로 시작하는 스키마 제외)에 대해 다음 명령어를 실행합니다.
      GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT USAGE ON SCHEMA pglogical TO PUBLIC;
      GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
  6. template0, template1, rdsadmin를 제외하고 마이그레이션할 각 데이터베이스에 pglogical 확장 프로그램을 설치합니다.
    • PostgreSQL 버전 9.4: 다음 명령어를 실행합니다.
      CREATE EXTENSION IF NOT EXISTS pglogical;
      CREATE EXTENSION IF NOT EXISTS pglogical_origin;
    • PostgreSQL 버전 9.5 이상: 다음 명령어를 실행합니다.
      CREATE EXTENSION IF NOT EXISTS pglogical;

    요구사항에 대한 자세한 내용은 AWS 문서의 PostgreSQL용 Amazon RDS에서 PostgreSQL 확장 프로그램 사용을 참조하세요.

  7. 테이블에 기본 키가 있는지 확인합니다. 연속 마이그레이션의 경우 PostgreSQL 논리적 복제를 수행하려면 변경 데이터 캡처 (CDC) 단계에서 UPDATE 및 DELETE 작업을 복제하기 위해 테이블에 기본 키가 있어야 합니다.
    • 기본 키가 있는 테이블은 모든 INSERT, UPDATE, DELETE 작업을 자동으로 복제합니다.
    • 기본 키가 없는 테이블의 경우 Database Migration Service는 CDC 단계 중에 초기 스냅샷과 후속 INSERT 문의 마이그레이션만 지원합니다. UPDATE 및 DELETE 문을 수동으로 마이그레이션해야 합니다.

      마이그레이션을 시작하기 전에 기본 키가 없는 테이블에 기본 키를 추가하는 것이 좋습니다. 기본 키 없이 PostgreSQL 데이터베이스의 테이블을 나열하는 쿼리를 생성하는 방법 또는 UPDATE 및 DELETE 작업을 수동으로 마이그레이션하는 방법은 디버깅 및 기타 도구를 참조하세요.

      또는 빠른 시작 마이그레이션 흐름을 사용할 수 있습니다. 이 흐름은 REPLICA IDENTITY를 사용하여 기본 키가 없는 테이블을 마이그레이션할 수 있는 간소화된 마이그레이션 시나리오입니다. 자세한 내용은 빠른 시작 마이그레이션 사용 가이드를 참조하세요.

  8. PostgreSQL 버전 9.5 이하를 실행하는 소스: PostgreSQL 버전 9.6 이하를 실행하는 소스 인스턴스에는 복제 지연 측정항목을 사용할 수 없습니다. 이 측정항목을 사용하여 마이그레이션 진행 상황을 추적하려면 복제 지연 사용 설정을 참조하세요.
  9. 커스텀 DB 파라미터 그룹을 구성하고 인스턴스에 연결합니다.
    1. 맞춤 매개변수 그룹을 만들고 (AWS 문서의 DB 파라미터 그룹 작업 참조) 다음 파라미터를 구성합니다.
      1. shared_preload_libraries에 pglogical를 포함하도록 설정합니다.
      2. rds.logical_replication을 1로 설정합니다. 이 매개변수는 Amazon RDS에서 논리적 WAL 로깅을 사용 설정합니다. PostgreSQL용 Amazon RDS의 논리 복제를 참조하세요.
      3. wal_sender_timeout을 0로 설정합니다. 0 값은 비활성 복제 연결을 종료하는 제한 시간 메커니즘을 중지합니다.
      4. max_replication_slots를 최소한 마이그레이션할 데이터베이스 수에 마이그레이션 작업 수를 곱한 값에 테이블 동기화를 위한 비축분을 더한 값으로 설정합니다.

        예를 들어 소스 인스턴스에 5개의 데이터베이스가 있고 해당 소스에 대한 2개의 마이그레이션 작업을 만드는 경우 복제 슬롯 수는 5 * 2 = 10개 이상을 이미 소스에서 다른 태스크에 사용 중인 복제 슬롯 수와 합한 값이어야 합니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 마이그레이션 작업을 만들 때 복제 슬롯 수를 늘리고 마이그레이션 작업 테스트를 실행하여 구성을 확인해야 합니다.

        이 매개변수의 기본값은 10입니다.

      5. max_wal_senders를 최소한 max_replication_slots 값에 인스턴스에서 이미 사용한 발신자 수를 더한 값으로 설정합니다.

        예를 들어 max_replication_slots 파라미터가 10으로 설정되어 있고 이미 발신자 2개를 사용 중인 경우 동시에 실행되는 WAL 발신자 프로세스 수는 10+2 = 12개입니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 마이그레이션 작업을 만들 때 발신자 수를 늘리고 마이그레이션 작업 테스트를 실행하여 구성을 확인해야 합니다.

        이 매개변수의 기본값은 10입니다.

      6. max_worker_processes를 마이그레이션할 데이터베이스 수에 인스턴스의 기존 작업자 프로세스를 더한 값 이상으로 설정합니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 연결당 추가 작업자 프로세스 2개(최대 20개 작업자)를 고려하세요.

        이 매개변수의 기본값은 8입니다.

    2. RDS DB 인스턴스에 파라미터 그룹을 연결합니다. 새 인스턴스를 만드는 경우 추가 구성에서 이 옵션을 찾을 수 있습니다. 그렇지 않으면 매개변수 그룹을 연결하도록 인스턴스를 수정합니다.
  10. 파라미터 그룹 변경사항이 적용되도록 Amazon RDS 인스턴스를 다시 시작합니다.

PostgreSQL용 Amazon Aurora 소스 구성

마이그레이션 프로세스에 Amazon Aurora PostgreSQL 소스 클러스터를 구성하려면 다음을 수행하세요.

  1. PostgreSQL용 Amazon Aurora 소스의 경우 Database Migration Service는 템플릿 데이터베이스 template0, template1, AWS 내부 데이터베이스 rdsadmin를 제외한 소스 클러스터의 모든 데이터베이스를 마이그레이션합니다.
  2. 소스 클러스터에 기본 postgres 데이터베이스가 포함되어 있는지 확인합니다. 이 데이터베이스가 없으면 마이그레이션을 구성하기 전에 만듭니다.
  3. Amazon Aurora 클러스터 VPC 보안 그룹 인바운드 규칙을 구성합니다. 대상 Cloud SQL 아웃바운드 IP 주소, VPC CIDR 범위 또는 역방향 SSH 배스천 호스트 VM에서 포트 5432의 수신 TCP 연결을 허용합니다.
  4. 소스 데이터베이스에 설치된 PostgreSQL 확장 프로그램을 확인합니다. Database Migration Service는 Cloud SQL에서 지원되지 않는 확장 프로그램을 마이그레이션하지 않습니다. 소스 데이터베이스 객체 및 애플리케이션 쿼리가 지원되지 않는 확장 프로그램을 참조하지 않는지 확인합니다. 계속하기 전에 소스 데이터베이스에서 지원되지 않는 확장 프로그램과 참조를 삭제하세요.

    pg_cron 확장 프로그램은 Database Migration Service에서 자동으로 마이그레이션되지 않지만 PostgreSQL용 Cloud SQL 대상에서 지원됩니다. 소스 데이터베이스에서 pg_cron를 사용하는 경우 마이그레이션을 승격한 후 대상 인스턴스에 다시 설치하고 구성합니다.

  5. 소스 클러스터에 전용 마이그레이션 사용자 계정을 만들고 필요한 권한을 부여합니다.
    1. 관리 계정을 사용하여 소스 클러스터에 연결하고 사용자를 만들고 AWS 관리형 rds_replication 역할을 부여합니다.
      CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD';
      GRANT rds_replication TO "MIGRATION_USER_ACCOUNT_NAME";
    2. 마이그레이션 사용자 계정에 기본 postgres 데이터베이스와 마이그레이션하려는 모든 데이터베이스에 필요한 권한을 부여합니다. 각 데이터베이스에서 각 스키마 (정보 스키마 및 pg_로 시작하는 스키마 제외)에 대해 다음 명령어를 실행합니다.
      GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT USAGE ON SCHEMA pglogical TO PUBLIC;
      GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
  6. template0, template1, rdsadmin를 제외하고 마이그레이션할 각 데이터베이스에 pglogical 확장 프로그램을 설치합니다.
    CREATE EXTENSION IF NOT EXISTS pglogical;
  7. 테이블에 기본 키가 있는지 확인합니다. 연속 마이그레이션의 경우 PostgreSQL 논리적 복제를 수행하려면 변경 데이터 캡처 (CDC) 단계에서 UPDATE 및 DELETE 작업을 복제하기 위해 테이블에 기본 키가 있어야 합니다.
    • 기본 키가 있는 테이블은 모든 INSERT, UPDATE, DELETE 작업을 자동으로 복제합니다.
    • 기본 키가 없는 테이블의 경우 Database Migration Service는 CDC 단계 중에 초기 스냅샷과 후속 INSERT 문의 마이그레이션만 지원합니다. UPDATE 및 DELETE 문을 수동으로 마이그레이션해야 합니다.

      마이그레이션을 시작하기 전에 기본 키가 없는 테이블에 기본 키를 추가하는 것이 좋습니다. 기본 키 없이 PostgreSQL 데이터베이스의 테이블을 나열하는 쿼리를 생성하는 방법 또는 UPDATE 및 DELETE 작업을 수동으로 마이그레이션하는 방법은 디버깅 및 기타 도구를 참조하세요.

      또는 빠른 시작 마이그레이션 흐름을 사용할 수 있습니다. 이 흐름은 REPLICA IDENTITY를 사용하여 기본 키가 없는 테이블을 마이그레이션할 수 있는 간소화된 마이그레이션 시나리오입니다. 자세한 내용은 빠른 시작 마이그레이션 사용 가이드를 참조하세요.

  8. 커스텀 DB 클러스터 파라미터 그룹을 구성하고 클러스터에 연결합니다.
    1. 커스텀 DB 클러스터 파라미터 그룹을 만들고 다음 파라미터를 구성합니다.
      1. shared_preload_libraries에 pglogical를 포함하도록 설정합니다.
      2. rds.logical_replication을 1로 설정합니다. 이 매개변수는 논리적 WAL 로깅을 사용 설정합니다.
      3. wal_sender_timeout을 0로 설정합니다. 0 값은 비활성 복제 연결을 종료하는 제한 시간 메커니즘을 중지합니다.
      4. max_replication_slots를 최소한 마이그레이션할 데이터베이스 수에 마이그레이션 작업 수를 곱한 값에 테이블 동기화를 위한 비축분을 더한 값으로 설정합니다.

        예를 들어 소스 인스턴스에 5개의 데이터베이스가 있고 해당 소스에 대한 2개의 마이그레이션 작업을 만드는 경우 복제 슬롯 수는 5 * 2 = 10개 이상을 이미 소스에서 다른 태스크에 사용 중인 복제 슬롯 수와 합한 값이어야 합니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 마이그레이션 작업을 만들 때 복제 슬롯 수를 늘리고 마이그레이션 작업 테스트를 실행하여 구성을 확인해야 합니다.

        이 매개변수의 기본값은 10입니다.

      5. max_wal_senders를 최소한 max_replication_slots 값에 인스턴스에서 이미 사용한 발신자 수를 더한 값으로 설정합니다.

        예를 들어 max_replication_slots 파라미터가 10으로 설정되어 있고 이미 발신자 2개를 사용 중인 경우 동시에 실행되는 WAL 발신자 프로세스 수는 10+2 = 12개입니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 마이그레이션 작업을 만들 때 발신자 수를 늘리고 마이그레이션 작업 테스트를 실행하여 구성을 확인해야 합니다.

        이 매개변수의 기본값은 10입니다.

      6. max_worker_processes를 마이그레이션할 데이터베이스 수에 인스턴스의 기존 작업자 프로세스를 더한 값 이상으로 설정합니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 연결당 추가 작업자 프로세스 2개(최대 20개 작업자)를 고려하세요.

        이 매개변수의 기본값은 8입니다.

    2. DB 클러스터 파라미터 그룹을 Aurora DB 클러스터에 연결합니다.
  9. 파라미터 그룹 변경사항이 적용되도록 Amazon Aurora DB 클러스터를 다시 시작합니다.

PostgreSQL용 Microsoft Azure Database Flexible Server 소스 구성

마이그레이션 프로세스에 PostgreSQL용 Microsoft Azure Database Flexible Server 소스 인스턴스를 구성하려면 다음을 수행하세요.

  1. PostgreSQL용 Microsoft Azure Database Flexible Server 소스의 경우 Database Migration Service는 Azure 시스템 및 템플릿 데이터베이스(azure_maintenance, azure_sys, template0, template1)를 제외한 소스 인스턴스의 모든 데이터베이스를 마이그레이션합니다.
  2. 소스 인스턴스에 기본 postgres 데이터베이스가 포함되어 있는지 확인합니다. 이 데이터베이스가 없으면 마이그레이션을 구성하기 전에 만듭니다.
  3. Azure 방화벽 및 SSL/TLS 설정을 구성합니다.
    1. Azure 네트워킹 설정에서 대상 Cloud SQL 아웃바운드 IP 주소, VPC CIDR 범위 또는 역방향 SSH 배스천 호스트 VM의 포트 5432에서 인바운드 TCP 연결을 허용하는 방화벽 규칙을 추가합니다.
    2. require_secure_transport 서버 매개변수의 값을 확인합니다. 기본적으로 Azure 데이터베이스는 수신 연결에 SSL/TLS 암호화를 요구합니다. require_secure_transport 설정에 따라 소스 연결 프로필을 만들 때 다음 암호화 설정 중 하나를 선택합니다.
      • require_secure_transport가 on로 설정된 경우 기본, TLS 또는 mTLS를 선택합니다.
      • require_secure_transport이 off로 설정된 경우 없음을 선택합니다.
  4. 소스 데이터베이스에 설치된 PostgreSQL 확장 프로그램을 확인합니다. Database Migration Service는 Cloud SQL에서 지원되지 않는 확장 프로그램을 마이그레이션하지 않습니다. 소스 데이터베이스 객체 및 애플리케이션 쿼리가 지원되지 않는 확장 프로그램을 참조하지 않는지 확인합니다. 계속하기 전에 소스 데이터베이스에서 지원되지 않는 확장 프로그램과 참조를 삭제하세요.

    pg_cron 확장 프로그램은 Database Migration Service에서 자동으로 마이그레이션되지 않지만 PostgreSQL용 Cloud SQL 대상에서 지원됩니다. 소스 데이터베이스에서 pg_cron를 사용하는 경우 마이그레이션을 승격한 후 대상 인스턴스에 다시 설치하고 구성합니다.

  5. 소스 인스턴스에 전용 마이그레이션 사용자 계정을 만들고 필요한 권한을 부여합니다.
    1. 관리 계정을 사용하여 소스 인스턴스에 연결하고 사용자를 만들고 복제 역할을 할당합니다.
      CREATE USER MIGRATION_USER_ACCOUNT_NAME WITH PASSWORD 'PASSWORD';
      ALTER USER MIGRATION_USER_ACCOUNT_NAME WITH REPLICATION;
    2. 마이그레이션 사용자 계정에 기본 postgres 데이터베이스와 마이그레이션하려는 모든 데이터베이스에 필요한 권한을 부여합니다. 각 데이터베이스에서 각 스키마 (정보 스키마 및 pg_로 시작하는 스키마 제외)에 대해 다음 명령어를 실행합니다.
      GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT USAGE ON SCHEMA pglogical TO PUBLIC;
      GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
  6. azure_maintenance, azure_sys, template0, template1를 제외하고 마이그레이션할 각 데이터베이스에 pglogical 확장 프로그램을 설치합니다.
    • PostgreSQL 버전 9.4: 다음 명령어를 실행합니다.
      CREATE EXTENSION IF NOT EXISTS pglogical;
      CREATE EXTENSION IF NOT EXISTS pglogical_origin;
    • PostgreSQL 버전 9.5 이상: 다음 명령어를 실행합니다.
      CREATE EXTENSION IF NOT EXISTS pglogical;
  7. 테이블에 기본 키가 있는지 확인합니다. 연속 마이그레이션의 경우 PostgreSQL 논리적 복제를 수행하려면 변경 데이터 캡처 (CDC) 단계에서 UPDATE 및 DELETE 작업을 복제하기 위해 테이블에 기본 키가 있어야 합니다.
    • 기본 키가 있는 테이블은 모든 INSERT, UPDATE, DELETE 작업을 자동으로 복제합니다.
    • 기본 키가 없는 테이블의 경우 Database Migration Service는 CDC 단계 중에 초기 스냅샷과 후속 INSERT 문의 마이그레이션만 지원합니다. UPDATE 및 DELETE 문을 수동으로 마이그레이션해야 합니다.

      마이그레이션을 시작하기 전에 기본 키가 없는 테이블에 기본 키를 추가하는 것이 좋습니다. 기본 키 없이 PostgreSQL 데이터베이스의 테이블을 나열하는 쿼리를 생성하는 방법 또는 UPDATE 및 DELETE 작업을 수동으로 마이그레이션하는 방법은 디버깅 및 기타 도구를 참조하세요.

      또는 빠른 시작 마이그레이션 흐름을 사용할 수 있습니다. 이 흐름은 REPLICA IDENTITY를 사용하여 기본 키가 없는 테이블을 마이그레이션할 수 있는 간소화된 마이그레이션 시나리오입니다. 자세한 내용은 빠른 시작 마이그레이션 사용 가이드를 참조하세요.

  8. PostgreSQL 버전 9.5 이하를 실행하는 소스: PostgreSQL 버전 9.6 이하를 실행하는 소스 인스턴스에는 복제 지연 측정항목을 사용할 수 없습니다. 이 측정항목을 사용하여 마이그레이션 진행 상황을 추적하려면 복제 지연 사용 설정을 참조하세요.
  9. Azure에서 다음 서버 매개변수를 구성합니다. 자세한 내용은 PostgreSQL용 Azure Database에서 서버 파라미터 구성을 참조하세요.
    1. shared_preload_libraries에 pglogical를 포함하도록 설정합니다.
    2. azure.extensions에 pglogical를 포함하도록 설정합니다.
    3. wal_level을 logical로 설정합니다.
    4. wal_sender_timeout을 0로 설정합니다. 0 값은 비활성 복제 연결을 종료하는 제한 시간 메커니즘을 중지합니다.
    5. max_replication_slots를 최소한 마이그레이션할 데이터베이스 수에 마이그레이션 작업 수를 곱한 값에 테이블 동기화를 위한 비축분을 더한 값으로 설정합니다.

      예를 들어 소스 인스턴스에 5개의 데이터베이스가 있고 해당 소스에 대한 2개의 마이그레이션 작업을 만드는 경우 복제 슬롯 수는 5 * 2 = 10개 이상을 이미 소스에서 다른 태스크에 사용 중인 복제 슬롯 수와 합한 값이어야 합니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 마이그레이션 작업을 만들 때 복제 슬롯 수를 늘리고 마이그레이션 작업 테스트를 실행하여 구성을 확인해야 합니다.

      이 매개변수의 기본값은 10입니다.

    6. max_wal_senders를 최소한 max_replication_slots 값에 인스턴스에서 이미 사용한 발신자 수를 더한 값으로 설정합니다.

      예를 들어 max_replication_slots 파라미터가 10으로 설정되어 있고 이미 발신자 2개를 사용 중인 경우 동시에 실행되는 WAL 발신자 프로세스 수는 10+2 = 12개입니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 마이그레이션 작업을 만들 때 발신자 수를 늘리고 마이그레이션 작업 테스트를 실행하여 구성을 확인해야 합니다.

      이 매개변수의 기본값은 10입니다.

    7. max_worker_processes를 마이그레이션할 데이터베이스 수에 인스턴스의 기존 작업자 프로세스를 더한 값 이상으로 설정합니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 연결당 추가 작업자 프로세스 2개(최대 20개 작업자)를 고려하세요.

      이 매개변수의 기본값은 8입니다.

    파라미터에 대한 자세한 내용은 Microsoft 문서의 PostgreSQL용 Azure Database의 서버 파라미터 목록을 참조하세요.

  10. 서버 파라미터 변경사항이 적용되도록 PostgreSQL용 Microsoft Azure Database Flexible Server 인스턴스를 다시 시작합니다.

PostgreSQL용 Cloud SQL 소스 구성

마이그레이션 프로세스에 PostgreSQL용 Cloud SQL 소스 인스턴스를 구성하려면 다음을 수행하세요.

  1. PostgreSQL용 Cloud SQL 소스의 경우 Database Migration Service는 템플릿 데이터베이스 template0 및 template1를 제외한 소스 인스턴스의 모든 데이터베이스를 마이그레이션합니다.
  2. 소스 인스턴스에 기본 postgres 데이터베이스가 포함되어 있는지 확인합니다. 이 데이터베이스가 없으면 마이그레이션을 구성하기 전에 만듭니다.
  3. 비공개 IP 주소로 구성된 Cloud SQL 소스 인스턴스에서 RFC 1918 이외의 주소 IP 범위를 사용하는 Cloud SQL 대상 인스턴스로 마이그레이션하는 경우 RFC 1918 이외의 범위를 소스 인스턴스의 승인된 네트워크에 추가합니다. 자세한 내용은 승인된 네트워크 구성을 참조하세요.
  4. 소스 데이터베이스에 설치된 PostgreSQL 확장 프로그램을 확인합니다. Database Migration Service는 Cloud SQL에서 지원되지 않는 확장 프로그램을 마이그레이션하지 않습니다. 소스 데이터베이스 객체 및 애플리케이션 쿼리가 지원되지 않는 확장 프로그램을 참조하지 않는지 확인합니다. 계속하기 전에 소스 데이터베이스에서 지원되지 않는 확장 프로그램과 참조를 삭제합니다.

    pg_cron 확장 프로그램은 Database Migration Service에서 자동으로 마이그레이션되지 않지만 PostgreSQL용 Cloud SQL 대상에서 지원됩니다. 소스 데이터베이스에서 pg_cron를 사용하는 경우 마이그레이션을 승격한 후 대상 인스턴스에 다시 설치하고 구성합니다.

  5. 소스 인스턴스에 전용 마이그레이션 사용자 계정을 만들고 필요한 권한을 부여합니다.
    1. Cloud SQL 문서의 사용자 만들기 페이지에 있는 단계를 따릅니다.
    2. 마이그레이션 사용자 계정에 기본 postgres 데이터베이스와 마이그레이션하려는 모든 데이터베이스에 필요한 권한을 부여합니다. 각 데이터베이스에서 각 스키마 (정보 스키마 및 pg_로 시작하는 스키마 제외)에 대해 다음 명령어를 실행합니다.
      GRANT USAGE ON SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT USAGE ON SCHEMA pglogical TO PUBLIC;
      GRANT SELECT ON ALL TABLES IN SCHEMA pglogical TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
      GRANT SELECT ON ALL SEQUENCES IN SCHEMA SCHEMA_NAME TO "MIGRATION_USER_ACCOUNT_NAME";
  6. template0 및 template1를 제외하고 마이그레이션할 각 데이터베이스에 pglogical 확장 프로그램을 설치합니다.
    • PostgreSQL 버전 9.4: 다음 명령어를 실행합니다.
      CREATE EXTENSION IF NOT EXISTS pglogical;
      CREATE EXTENSION IF NOT EXISTS pglogical_origin;
    • PostgreSQL 버전 9.5 이상: 다음 명령어를 실행합니다.
      CREATE EXTENSION IF NOT EXISTS pglogical;
  7. 테이블에 기본 키가 있는지 확인합니다. 연속 마이그레이션의 경우 PostgreSQL 논리적 복제를 수행하려면 변경 데이터 캡처 (CDC) 단계에서 UPDATE 및 DELETE 작업을 복제하기 위해 테이블에 기본 키가 있어야 합니다.
    • 기본 키가 있는 테이블은 모든 INSERT, UPDATE, DELETE 작업을 자동으로 복제합니다.
    • 기본 키가 없는 테이블의 경우 Database Migration Service는 CDC 단계에서 초기 스냅샷과 후속 INSERT 문을 마이그레이션합니다. UPDATE 및 DELETE 문은 수동으로 마이그레이션해야 합니다.

      마이그레이션을 시작하기 전에 기본 키가 없는 테이블에 기본 키를 추가하는 것이 좋습니다. 기본 키 없이 PostgreSQL 데이터베이스의 테이블을 나열하는 쿼리를 생성하는 방법 또는 UPDATE 및 DELETE 작업을 수동으로 마이그레이션하는 방법은 디버깅 및 기타 도구를 참조하세요.

      또는 빠른 시작 마이그레이션 흐름을 사용할 수 있습니다. 이 흐름은 REPLICA IDENTITY를 사용하여 기본 키가 없는 테이블을 마이그레이션할 수 있는 간소화된 마이그레이션 시나리오입니다. 자세한 내용은 빠른 시작 마이그레이션 사용 가이드를 참조하세요.

  8. PostgreSQL 버전 9.5 이하를 실행하는 소스: PostgreSQL 버전 9.6 이하를 실행하는 소스 인스턴스에는 복제 지연 측정항목을 사용할 수 없습니다. 이 측정항목을 사용하여 마이그레이션 진행 상황을 추적하려면 복제 지연 사용 설정을 참조하세요.
  9. Cloud SQL 소스 인스턴스에서 다음 데이터베이스 플래그를 구성합니다.
    1. cloudsql.logical_decoding을 on로 설정합니다.
    2. cloudsql.enable_pglogical을 on로 설정합니다.
    3. wal_sender_timeout을 0로 설정합니다. 0 값은 비활성 복제 연결을 종료하는 제한 시간 메커니즘을 중지합니다.
    4. max_replication_slots를 최소한 마이그레이션할 데이터베이스 수에 마이그레이션 작업 수를 곱한 값에 테이블 동기화를 위한 비축분을 더한 값으로 설정합니다.

      예를 들어 소스 인스턴스에 5개의 데이터베이스가 있고 해당 소스에 대해 2개의 마이그레이션 작업을 만드는 경우 복제 슬롯 수는 5 * 2 = 10개 이상을 이미 소스에서 다른 태스크에 사용 중인 복제 슬롯 수와 합한 값이어야 합니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 마이그레이션 작업을 만들 때 복제 슬롯 수를 늘리고 마이그레이션 작업 테스트를 실행하여 구성을 확인해야 합니다.

      이 플래그의 기본값은 10입니다.

    5. max_wal_senders를 최소한 max_replication_slots 값에 인스턴스에서 이미 사용한 발신자 수를 더한 값으로 설정합니다.

      예를 들어 max_replication_slots 플래그가 10으로 설정되어 있고 이미 발신자 2개를 사용 중인 경우 동시에 실행되는 WAL 발신자 프로세스 수는 10+2 = 12개입니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 마이그레이션 작업을 만들 때 발신자 수를 늘리고 마이그레이션 작업 테스트를 실행하여 구성을 확인해야 합니다.

      이 플래그의 기본값은 10입니다.

    6. max_worker_processes를 마이그레이션할 데이터베이스 수에 인스턴스의 기존 작업자 프로세스를 더한 값 이상으로 설정합니다. 조정된 데이터 덤프 동시 로드 설정을 사용하려면 연결당 추가 작업자 프로세스 2개(최대 20개 작업자)를 고려하세요.

      이 플래그의 기본값은 8입니다.

    플래그 수정에 대한 자세한 내용은 Cloud SQL 문서의 데이터베이스 플래그 구성을 참조하세요.

  10. 데이터베이스 플래그 변경사항이 적용될 수 있도록 소스 Cloud SQL 인스턴스를 다시 시작합니다.

다음 단계