Database Migration Service를 사용하여 빠른 시작 마이그레이션 사용

이 페이지에서는 동종 PostgreSQL을 PostgreSQL용 Cloud SQL로 마이그레이션하기 위한 빠른 시작 마이그레이션을 실행하는 방법을 설명합니다.

개요

빠른 시작 마이그레이션은 동종 PostgreSQL 시나리오를 위한 경량 연속 마이그레이션 흐름입니다. 빠른 시작 마이그레이션을 사용하면 Database Migration Service가 데이터베이스를 마이그레이션하는 데 필요한 모든 항목(네트워킹 구성요소(네트워크 연결, 서브넷, 비공개 연결 구성), 연결 프로필, 마이그레이션 작업)을 자동으로 설정할 수 있습니다.

빠른 시작 마이그레이션을 사용하면 기존 PostgreSQL용 Cloud SQL 인스턴스로 데이터를 이동하거나 마이그레이션을 구성할 때 새 인스턴스를 만들 수 있습니다. 빠른 시작 마이그레이션은 다음과 같은 경우에 가장 적합합니다.

  • 데이터 덤프 병렬 처리 설정을 정확하게 제어할 필요가 없는 기본 마이그레이션
  • 데이터베이스를 한 Google Cloud 프로젝트에서 다른 프로젝트로 마이그레이션 빠른 시작 마이그레이션을 구성할 때 소스와 다른 프로젝트에 대상 인스턴스를 만들고 Database Migration Service가 다른 프로젝트의 가상 프라이빗 클라우드 (VPC) 네트워크에 네트워크 연결 및 서브넷을 만들도록 설정할 수 있습니다.
  • Google Cloud가상 프라이빗 클라우드(VPC) 네트워크에 비공개 IP 주소가 있는 소스(예: Compute Engine의 자체 관리 데이터베이스 또는 비공개 네트워킹이 사용 설정된 PostgreSQL용 Cloud SQL 인스턴스)에서 이전

    VPC 네트워크 내의 비공개 IP 주소에서 액세스할 수 있도록 Google Cloud 외부에 호스팅된 소스에는 추가 네트워크 구성요소(예: Cloud VPN 연결)가 필요할 수 있습니다.

  • 데이터베이스 연결에 지원되는 유일한 방법은 Database Migration Service 비공개 연결 구성이 있는 Private Service Connect 인터페이스입니다. 소스 데이터베이스에는 VPC 네트워크에 할당된 비공개 IP가 있어야 합니다. 다른 동종 소스 연결 방법 (예: 공개 IP 허용 목록, 역방향 SSH 터널 또는 VPC 피어링)은 빠른 시작 마이그레이션에서 지원되지 않습니다.

빠른 시작 마이그레이션에 대해 자세히 알아보려면 Database Migration Service 문서의 빠른 시작 마이그레이션을 참고하세요.

시작하기 전에

  1. 빠른 시작 마이그레이션이 시나리오를 완전히 지원할 수 있는지 확인합니다. Database Migration Service 문서의 빠른 시작 마이그레이션 제한사항을 참고하세요.
  2. Google 계정에 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verify that billing is enabled for your Google Cloud project.

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Database Migration Service, Compute Engine, Network Connectivity Center, Cloud SQL Admin API를 사용 설정합니다.

    API 사용 설정

필요한 역할

Database Migration Service를 사용하여 PostgreSQL용 Cloud SQL로 빠른 시작 마이그레이션을 실행하는 데 필요한 권한을 얻으려면 관리자에게 관련 프로젝트에서 마이그레이션에 참여하는 계정에 필요한 Identity and Access Management (IAM) 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 IAM 문서의 액세스 관리를 참고하세요.

소스 프로젝트의 역할 및 권한

소스 데이터베이스가 있는 Google Cloud 프로젝트의 특정 계정에 다음 역할을 부여합니다.

  • 마이그레이션을 실행하는 사용자 계정: Compute 네트워크 관리자 (roles/compute.networkAdmin)
  • 대상 프로젝트의 Database Migration Service 서비스 계정: Compute 네트워크 뷰어(roles/compute.networkViewer)

    Database Migration Service 서비스 계정은 Database Migration Service API를 사용 설정할 때 생성됩니다. 이 계정과 연결된 이메일 주소가 자동으로 생성되며 변경할 수 없습니다. 이 이메일 주소는 다음 형식을 사용합니다.

    service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.iam.gserviceaccount.com

이러한 사전 정의된 역할에는 Database Migration Service를 사용한 빠른 시작 마이그레이션의 일환으로 소스 데이터베이스 프로젝트에서 연결을 설정하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 (소스) 섹션을 확장하세요.

필수 권한 (소스)

Database Migration Service를 사용하여 동종 빠른 시작 마이그레이션을 수행하려면 다음 권한이 필요합니다.

이전을 실행하는 사용자 계정의 경우 다음을 충족해야 합니다.

  • compute.networks.*
  • compute.subnetworks.*
  • compute.networkAttachments.*

대상 프로젝트의 Database Migration Service 서비스 계정: compute.networkAttachments.get

대상 프로젝트의 역할 및 권한

대상 데이터베이스가 있는 Google Cloud 프로젝트에서 마이그레이션을 실행하는 사용자 계정에 다음 역할을 부여합니다.

이러한 사전 정의된 역할에는 Database Migration Service를 사용한 빠른 시작 마이그레이션의 일환으로 대상 데이터베이스 프로젝트에 필요한 마이그레이션 구성요소를 설정하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 (대상) 섹션을 펼치세요.

필수 권한 (대상)

Database Migration Service를 사용하여 동종 빠른 시작 마이그레이션을 수행하려면 다음 권한이 필요합니다.

  • datamigration.*
  • cloudsql.instances.create
  • cloudsql.instances.delete
  • cloudsql.instances.get
  • cloudsql.instances.list
  • cloudsql.instances.update
  • cloudsql.instances.connect
  • cloudsql.instances.executeSql
  • cloudsql.instances.export
  • cloudsql.instances.import
  • cloudsql.instances.login
  • cloudsql.operations.get
  • cloudsql.users.get
  • cloudsql.users.list
  • cloudsql.users.create
  • cloudsql.users.update
  • cloudsql.users.delete

소스 데이터베이스 구성

소스 PostgreSQL 데이터베이스를 구성하려면 다음 단계를 따르세요.

  1. 인스턴스에 전용 마이그레이션 사용자 계정을 만듭니다.
    • PostgreSQL용 Cloud SQL 소스의 경우 PostgreSQL용 Cloud SQL 문서의 사용자 만들기를 참고하세요.
    • 다른 소스의 경우 데이터베이스 제공업체 문서 또는 PostgreSQL 문서의 사용자 만들기 및 관리를 참고하세요.
  2. 전용 마이그레이션 사용자 계정에 필요한 권한을 할당합니다. 마이그레이션하려는 각 데이터베이스에 대해 다음 명령어를 실행합니다.
    -- Grant the REPLICATION attribute
    ALTER ROLE MIGRATION_USER REPLICATION;
    
    -- Grant database-level permissions.
    -- Repeat for each database you want to migrate.
    GRANT CONNECT, CREATE ON DATABASE DATABASE_NAME TO MIGRATION_USER;
    
    -- Grant schema-level usage.
    -- Repeat for each schema in each database you want to migrate.
    GRANT USAGE ON SCHEMA SCHEMA_NAME TO MIGRATION_USER;

    다음을 바꿉니다.

    • MIGRATION_USER을 이전 사용자 계정의 이름으로 바꿉니다.
    • DATABASE_NAME을 마이그레이션하려는 데이터베이스의 이름으로 바꿉니다.
    • SCHEMA_NAME을 마이그레이션할 데이터베이스의 스키마 이름으로 바꿉니다.
  3. 마이그레이션 사용자 계정에는 마이그레이션하는 테이블에 대한 소유권 액세스 권한이 있어야 합니다. 이 수준의 액세스 권한을 부여하려면 다음 중 하나를 수행하세요.
    • 마이그레이션 계정에 SUPERUSER PostgreSQL 역할을 할당합니다.
      • PostgreSQL용 Cloud SQL 소스의 경우 cloudsqlsuperuser 역할을 할당합니다.
      • 다른 소스의 경우 SUPERUSER 역할을 할당하거나 데이터베이스 제공업체 문서에서 이에 상응하는 권한 집합을 확인하세요.
    • 테이블을 소유한 사용자 그룹에 이전 사용자 계정을 추가합니다. 다음 명령어를 실행합니다.
      -- Grant table ownership.
      GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;

      다음을 바꿉니다.

      • TABLE_OWNER_GROUP_NAME를 이전하려는 각 테이블을 소유한 사용자 그룹의 이름으로 바꿉니다.
      • MIGRATION_USER을 이전 사용자 계정의 이름으로 바꿉니다.
  4. 기본 키가 없는 테이블의 경우: Database Migration Service는 변경 데이터 캡처 (CDC) 단계에서 기본 키가 없는 테이블의 UPDATE 또는 DELETE 작업을 복제하지 않습니다. 이러한 작업을 복제에 포함하려면 REPLICA IDENTITY를 사용하여 기본 키가 없는 테이블을 수정하세요.
    ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL;
    ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;

    다음을 바꿉니다.

    • TABLE_NAME은 기본 키가 없는 테이블의 이름입니다.
    • INDEX_NAME는 기본 키가 없는 테이블의 행을 추적할 수 있는 고유 색인입니다.
  5. 데이터베이스 플래그를 사용하여 복제 설정을 구성합니다.

    자체 관리 소스

    데이터베이스 플래그를 변경사항을 저장하려면 데이터베이스를 완전히 다시 시작해야 합니다. 다음 예에서는 플래그 값을 변경하기 위해 SQL 쿼리를 사용합니다. SQL 쿼리를 직접 실행할 수 없는 경우 제공업체 문서를 참고하여 이러한 플래그를 변경하는 단계를 확인하세요.

    1. wal_level 매개변수를 logical로 설정합니다. 다음 명령어를 실행합니다.
      ALTER SYSTEM SET wal_level = 'logical';
    2. wal_sender_timeout 매개변수를 0로 설정합니다. 이 값은 비활성 복제 연결을 종료하는 데 사용되는 제한 시간 메커니즘을 중지합니다. 다음 명령어를 실행합니다.
      ALTER SYSTEM SET wal_sender_timeout = 0;
          
    3. max_replication_slots 매개변수로 복제 슬롯의 최대 수를 구성합니다. 이 매개변수는 마이그레이션 작업당 마이그레이션하는 데이터베이스 수에 테이블 동기화를 위한 약간의 비축분을 더한 값 이상으로 설정해야 합니다.

      예를 들어 데이터베이스 5개를 마이그레이션하고 소스 인스턴스에 대해 생성된 마이그레이션 작업이 2개인 경우 복제 슬롯 수는 5 * 2 = 10 이상이어야 하며, 이미 사용 중인 복제 슬롯 수도 추가해야 합니다.

      이 매개변수를 설정하려면 다음 명령어를 실행합니다.

      ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
          
      여기서 NUMBER_OF_SLOTS은 최대 복제 슬롯 수를 나타냅니다.
    4. max_wal_senders 매개변수를 max_replication_slots에 인스턴스에서 이미 사용한 발신자 수를 더한 값 이상으로 구성합니다.

      예를 들어 max_replication_slots 매개변수가 10으로 설정되어 있고 이미 발신자 2개를 사용 중인 경우 동시에 실행되는 WAL 발신자 프로세스 수는 10 + 2 = 12개입니다.

      이 매개변수를 설정하려면 다음 명령어를 실행합니다.

      ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
          
      여기서 NUMBER_OF_SENDERS은 동시에 실행되는 WAL 발신자 프로세스 수를 나타냅니다.
    5. max_worker_processes를 이전하려는 데이터베이스 수에 인스턴스에서 이미 사용한 max_worker_processes 수를 더한 값 이상으로 설정합니다. 이 매개변수를 설정하려면 다음 명령어를 실행합니다.
      ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
          
      여기서 NUMBER_OF_PROCESSES은 이전할 데이터베이스 수를 나타냅니다.

    PostgreSQL용 Cloud SQL 소스

    Cloud SQL 소스의 경우 Google Cloud 콘솔에서 데이터베이스 플래그를 구성합니다. 설정이 적용되도록 데이터베이스 플래그를 수정한 후 인스턴스를 다시 시작해야 합니다. Cloud SQL에서 데이터베이스 플래그를 설정하는 방법에 대한 자세한 내용은 Cloud SQL 문서의 데이터베이스 플래그 구성을 참고하세요.

    1. cloudsql.logical_decoding 플래그를 on로 설정합니다.
    2. wal_sender_timeout 매개변수를 0로 설정합니다. 이 값은 비활성 복제 연결을 종료하는 데 사용되는 제한 시간 메커니즘을 중지합니다.
    3. max_replication_slots 매개변수로 최대 복제 슬롯 수를 구성합니다. 이 매개변수는 마이그레이션 작업당 마이그레이션하는 데이터베이스 수에 테이블 동기화를 위한 약간의 비축분을 더한 값 이상으로 설정해야 합니다.

      예를 들어 데이터베이스 5개를 마이그레이션하고 소스 인스턴스에 대해 생성된 마이그레이션 작업이 2개인 경우 복제 슬롯 수는 5 * 2 = 10 이상이어야 하며, 이미 사용 중인 복제 슬롯 수도 추가해야 합니다.

    4. max_wal_senders 매개변수를 max_replication_slots 값에 인스턴스에서 이미 사용한 발신자 수를 더한 값 이상으로 구성합니다.

      예를 들어 max_replication_slots 매개변수가 10으로 설정되어 있고 이미 발신자 2개를 사용 중인 경우 동시에 실행되는 WAL 발신자 프로세스 수는 10 + 2 = 12개입니다.

    5. max_worker_processes를 이전하려는 데이터베이스 수에 인스턴스에서 이미 사용한 max_worker_processes 수를 더한 값 이상으로 설정합니다.

빠른 시작 마이그레이션 만들기 및 실행하기

빠른 시작 마이그레이션을 사용하면 새 Cloud SQL 인스턴스를 만들고 데이터베이스를 해당 인스턴스로 마이그레이션하거나 기존 인스턴스로 데이터베이스를 마이그레이션할 수 있습니다.

새 인스턴스의 빠른 시작 마이그레이션

새 PostgreSQL용 Cloud SQL 인스턴스를 만들고 데이터베이스를 즉시 마이그레이션하려면 다음 단계를 따르세요.

  1. 인스턴스 페이지로 이동합니다.

    인스턴스로 이동

  2. 인스턴스 만들기 > 기존 데이터베이스에서를 클릭합니다.
  3. 기존 데이터베이스 마이그레이션 창에서 PostgreSQL 마이그레이션 빠른 시작을 선택하고 계속을 클릭합니다.

    Database Migration Service 빠른 시작 마이그레이션 양식이 열립니다.

  4. 마이그레이션 구성 섹션에서 다음을 수행합니다.
    1. 대상 리전 메뉴에서 대상 PostgreSQL용 Cloud SQL 인스턴스의 리전을 선택합니다.
    2. 마이그레이션 접두사 상자에 빠른 시작 마이그레이션을 위해 생성된 모든 마이그레이션 엔티티(연결 프로필, 비공개 연결 구성, 네트워크 연결 및 서브넷, 마이그레이션 작업)의 이름에 추가될 사람이 읽기 쉬운 문자열을 입력합니다.
    3. 구성 유형 메뉴에서 다음 중 하나를 선택합니다.
      1. 기존 연결 구성: Private Service Connect 인터페이스 방법을 사용하는 네트워크 연결 및 비공개 연결 구성이 이미 있는 경우 이 옵션을 선택합니다. 이 옵션은 이전에 빠른 시작 마이그레이션을 사용했고 동일한 네트워킹 리소스를 다시 사용하려는 경우에 가장 적합합니다.
      2. 새 연결 구성: 소스 데이터베이스 VPC 네트워크에 새 네트워크 연결과 네트워크 연결 서브넷을 만들려면 이 옵션을 선택합니다. 비공개 연결 구성은 대상 인스턴스와 동일한 프로젝트에 생성됩니다.
    4. 계속을 클릭합니다.
  5. 소스 연결 섹션에서 다음을 수행합니다.
    1. 소스 데이터베이스의 호스트 이름 또는 비공개 IP 주소를 입력합니다. 소스 데이터베이스 주소는 소스 VPC 네트워크에서 연결할 수 있어야 합니다.
    2. 호스트에 액세스하는 데 사용되는 포트를 입력합니다. 기본 PostgreSQL 포트는 5432입니다.
    3. 소스 데이터베이스의 전용 마이그레이션 계정의 사용자 이름과 비밀번호를 입력합니다.
    4. 암호화 유형 메뉴에서 다음 중 하나를 선택합니다.
      • 없음: 소스 데이터베이스에 SSL/TLS로 암호화된 연결이 필요하지 않은 경우
      • 필수: 소스 데이터베이스에 SSL/TLS로 암호화된 연결이 필요한 경우 이 옵션은 인증서 확인이 필요하지 않습니다.
    5. 마이그레이션할 데이터베이스 메뉴에서 맞춤설정을 클릭합니다. 측면 패널을 사용하여 PostgreSQL용 Cloud SQL로 마이그레이션할 데이터베이스만 선택합니다.
    6. 계속을 클릭합니다.
  6. 대상 구성 섹션에서 다음을 수행합니다.
    1. 대상 인스턴스 유형 메뉴에서 새 인스턴스를 선택합니다.

      Database Migration Service는 새 인스턴스에 기본 PostgreSQL용 Cloud SQL 구성을 사용합니다. 맞춤설정을 클릭하여 머신 유형, 영역 가용성, 데이터 보호 설정과 같은 인스턴스 기능을 조정합니다. 인스턴스 구성에 대한 자세한 내용은 인스턴스 만들기를 참고하세요.

    2. 비밀번호 필드에 기본 postgresql 관리자 사용자의 비밀번호를 입력합니다. Database Migration Service는 이 사용자로 연결하여 데이터를 마이그레이션합니다.
  7. 이전 시작을 클릭합니다.

    이제 Database Migration Service에서 마이그레이션 작업을 만들고 마이그레이션 프로세스를 시작합니다. Database Migration Service 마이그레이션 작업 세부정보에서 마이그레이션 진행 상황을 모니터링할 수 있습니다. 자세한 내용은 Database Migration Service 문서의 마이그레이션 작업 관리를 참고하세요.

기존 인스턴스의 빠른 시작 마이그레이션

기존 Cloud SQL 인스턴스로 데이터베이스를 마이그레이션하려면 다음 단계를 따르세요.

  1. 인스턴스 페이지로 이동합니다.

    인스턴스로 이동

  2. 데이터베이스를 마이그레이션할 Cloud SQL 인스턴스를 선택합니다.
  3. 인스턴스 세부정보 페이지에서 데이터베이스 이전을 클릭합니다.

    Database Migration Service 빠른 시작 마이그레이션 양식이 열립니다.

  4. 마이그레이션 구성 섹션에서 다음을 수행합니다.
    1. 대상 리전 메뉴에서 대상 PostgreSQL용 Cloud SQL 인스턴스의 리전을 선택합니다.
    2. 마이그레이션 접두사 상자에 빠른 시작 마이그레이션을 위해 생성된 모든 마이그레이션 엔티티(연결 프로필, 비공개 연결 구성, 네트워크 연결 및 서브넷, 마이그레이션 작업)의 이름에 추가될 사람이 읽기 쉬운 문자열을 입력합니다.
    3. 구성 유형 메뉴에서 다음 중 하나를 선택합니다.
      1. 기존 연결 구성: 소스 데이터베이스 VPC 네트워크에서 Private Service Connect 인터페이스를 사용하는 네트워크 연결 및 비공개 연결 구성이 이미 있는 경우 이 옵션을 선택합니다. 이 옵션은 이전에 빠른 시작 마이그레이션을 사용했고 동일한 네트워킹 리소스를 다시 사용하려는 경우에 가장 적합합니다.
      2. 새 연결 구성: 소스 데이터베이스 VPC 네트워크에서 새 네트워크 연결, 네트워크 연결 서브넷, 비공개 연결 구성을 만들려면 이 옵션을 선택합니다.
    4. 계속을 클릭합니다.
  5. 소스 연결 섹션에서 다음을 수행합니다.
    1. 소스 데이터베이스의 호스트 이름 또는 비공개 IP 주소를 입력합니다. 소스 데이터베이스 주소는 소스 VPC 네트워크에서 연결할 수 있어야 합니다.
    2. 호스트에 액세스하는 데 사용되는 포트를 입력합니다. 기본 PostgreSQL 포트는 5432입니다.
    3. 소스 데이터베이스의 전용 마이그레이션 계정의 사용자 이름과 비밀번호를 입력합니다.
    4. 암호화 유형 메뉴에서 다음 중 하나를 선택합니다.
      • 없음: 소스 데이터베이스에 SSL/TLS로 암호화된 연결이 필요하지 않은 경우
      • 필수: 소스 데이터베이스에 SSL/TLS로 암호화된 연결이 필요한 경우 이 옵션은 인증서 확인이 필요하지 않습니다.
    5. 마이그레이션할 데이터베이스 메뉴에서 맞춤설정을 클릭합니다. 측면 패널을 사용하여 PostgreSQL용 Cloud SQL로 마이그레이션할 데이터베이스만 선택합니다.
  6. 이전 시작을 클릭합니다.

    이제 Database Migration Service에서 마이그레이션 작업을 만들고 마이그레이션 프로세스를 시작합니다. Database Migration Service 마이그레이션 작업 세부정보에서 마이그레이션 진행 상황을 모니터링할 수 있습니다. 자세한 내용은 Database Migration Service 문서의 마이그레이션 작업 관리를 참고하세요.

마이그레이션 완료

애플리케이션을 새 Cloud SQL 인스턴스로 전환하기로 결정한 경우 다음 단계에 따라 마이그레이션을 완료하세요.

  1. 소스 데이터베이스에 대한 모든 쓰기 작업을 중지합니다. 작동 기능을 유지하기 위해 읽기 전용 모드로 전환할 수 있습니다.
  2. 마이그레이션 작업을 승격합니다.
  3. 선택사항: 마이그레이션 데이터의 완전성을 확인합니다.

다음 단계