관리형 마이그레이션을 사용하여 자체 관리형 MySQL 메타스토어를 Dataproc Metastore로 마이그레이션

관리형 마이그레이션은 자동화 기능으로 상당한 다운타임(플래그 데이라고도 함) 없이 자체 관리형 Hive Metastore에서 Dataproc Metastore 서비스로 데이터를 마이그레이션할 수 있습니다.

관리형 마이그레이션 작동 방법

관리형 마이그레이션을 완료하려면 서비스가 마이그레이션 시작마이그레이션 완료라는 두 가지 마이그레이션 프로세스를 통해 실행되어야 합니다. 마이그레이션 취소 프로세스를 사용하여 언제든지 마이그레이션을 취소할 수 있습니다. 또한 마이그레이션을 완료하는 데 필요하지 않은 여러 작업 명령어를 실행할 수 있습니다. 예를 들어 마이그레이션 나열 또는 마이그레이션 삭제입니다.

서비스에서 이 프로세스를 진행하면서 다양한 마이그레이션 상태마이그레이션 단계 간에도 이동합니다. 이러한 상태 및 단계는 백그라운드에서 발생하는 프로세스를 나타냅니다. 예를 들어 MIGRATING 상태는 서비스가 Cloud SQL 데이터베이스에서 Dataproc Metastore로 데이터를 활발하게 전송하고 있음을 나타냅니다.

관리형 마이그레이션의 경우 마이그레이션을 실행하려면 3개의 서브넷(proxy_subnet, nat_subnet, reverse_proxy_subnet)이 필요합니다. 지연 시간 문제를 방지하려면 다음을 구성하세요.

  • Cloud SQL과 동일한 리전에 있는 proxy_subnetnat_subnet입니다.
  • reverse_proxy_subnet은 Dataproc Metastore 서비스와 동일한 리전에 있습니다.

다양한 서브넷 유형에 대한 자세한 내용은 서브넷 용도를 참조하세요.

관리형 마이그레이션 흐름

이전 시작

  1. Dataproc Metastore 서비스에서 마이그레이션 시작 프로세스를 실행합니다.
  2. Dataproc Metastore 서비스는 자체 관리형 Hive Metastore의 백엔드 데이터베이스 역할을 하는 Cloud SQL 데이터베이스에 연결됩니다. 이 단계에서 Cloud SQL 데이터베이스는 여전히 데이터의 정보 출처가 됩니다.

  3. Dataproc Metastore는 Cloud SQL 데이터베이스에서 Dataproc Metastore 데이터베이스(Cloud Spanner)로 데이터를 복사하는 변경 데이터 캡처(CDC) 스트림을 실행합니다.

    마이그레이션이 시작되면 Dataproc Metastore로 워크로드 라우팅을 시작할 수 있습니다. 이 시점에서 Cloud SQL은 여전히 데이터의 정보 소스입니다.

이전 완료

워크로드를 Dataproc Metastore로 이동한 후 마이그레이션을 완료할 수 있습니다. 전체 마이그레이션 프로세스가 호출되면 다음 작업이 수행됩니다.

  • Dataproc Metastore는 전체 마이그레이션 프로세스가 완료될 때까지 읽기 전용 모드로 전환됩니다.
  • CDC 스트림은 모든 처리 중인 데이터를 Dataproc Metastore로 전송합니다.
  • Dataproc Metastore는 Spanner에 연결되고 Cloud SQL과 연결 해제됩니다. Dataproc Metastore는 이제 데이터 정보 소스 역할을 합니다.

시작하기 전에

마이그레이션을 시작하려면 다음 서비스를 설정하거나 이에 액세스할 수 있어야 합니다.

  • Spanner 데이터베이스 유형으로 구성된 Dataproc Metastore입니다.
  • 비공개 IP로 구성된 MySQL용 Cloud SQL 데이터베이스 인스턴스입니다.

    • Cloud SQL 인스턴스의 VPC 네트워크에는 필수 서브넷이 있습니다.

    • Cloud SQL은 데이터를 복사하는 Dataproc Metastore 서비스에서 실행되는 Hive Metastore 버전과 호환되는 스키마가 포함된 데이터베이스를 사용합니다.

    • Datastream 소스로 사용할 Cloud SQL을 설정합니다. 사용자 이름과 비밀번호를 만들어 Datastream을 Cloud SQL에 연결합니다.

필요한 역할

Dataproc Metastore를 만들고 관리형 마이그레이션을 시작하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

  • IAM 권한 설정을 포함하여 모든 Dataproc Metastore 리소스에 대해 전체 액세스 권한을 부여하려는 경우: Dataproc Metastore 사용자 계정 또는 서비스 계정의 Dataproc Metastore 관리자(roles/metastore.admin)
  • Dataproc Metastore 리소스에 대해 전체 제어 권한을 부여하려는 경우: Dataproc Metastore 사용자 계정 또는 서비스 계정에 대한 Dataproc Metastore 편집자 역할(roles/metastore.editor)
  • 관리형 마이그레이션을 만들려는 경우: Dataproc Metastore[서비스 에이전트][7]에 대한 마이그레이션 관리자(roles/metastore.migrationAdmin)
  • Datastream에서 Cloud Storage 객체를 사용하려면 다음 안내를 따르세요.

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

관리형 마이그레이션 구성

Dataproc Metastore API를 사용하여 마이그레이션을 구성할 수 있습니다.

Dataproc Metastore 서비스는 한 번에 하나의 마이그레이션만 실행할 수 있습니다.

이전 시작

마이그레이션을 시작하면 Dataproc Metastore는 Cloud SQL에 연결하고 Cloud SQL을 백엔드 데이터베이스로 사용합니다. 이 프로세스 중에 Dataproc Metastore는 Cloud SQL에서 자체 데이터베이스(Spanner)로 데이터를 복사하는 파이프라인을 실행합니다.

Dataproc Metastore는 계속해서 Cloud SQL을 백엔드로 사용하고 전체 마이그레이션 프로세스가 호출될 때까지 데이터를 복제합니다.

고려사항

  • 마이그레이션은 마이그레이션 프로세스를 완료할 때까지 활성 상태로 유지됩니다. 마이그레이션을 완료하는 데는 기한이 없습니다. 예를 들어 마이그레이션에는 1일, 30일, 1년이 걸릴 수 있습니다.

  • 예약된 백업은 마이그레이션 중에 제한되지 않습니다. 그러나 백업이 불완전할 수 있습니다. 문제를 방지하려면 마이그레이션이 진행되는 동안 예약된 백업을 사용 중지하세요.

마이그레이션을 시작하면 다음과 같은 상태 변경이 트리거됩니다.

  • Dataproc Metastore가 MIGRATING 상태로 이동합니다.
  • 마이그레이션 실행 상태가 RUNNING으로 이동합니다.
  • 마이그레이션 실행 단계가 REPLICATION으로 이동합니다.

Console

시작하기

  1. Google Cloud 콘솔에서 Dataproc Metastore 페이지를 엽니다.

    Dataproc Metastore 열기

  2. Dataproc Metastore 페이지에서 마이그레이션하려는 서비스 이름을 클릭합니다.

    서비스 세부정보 페이지가 열립니다.

  3. 페이지 상단에서 데이터 마이그레이션을 클릭합니다.

    마이그레이션 만들기 페이지가 연결 탭에 열리고 Dataproc Metastore용 Cloud SQL 데이터베이스 구성 구성 설정이 표시됩니다.

DPMS용 Cloud SQL 데이터베이스 구성

  1. 인스턴스 연결 이름에서 Cloud SQL 데이터베이스의 인스턴스 연결 이름을 PROJECT_ID/LOCATION/CLOUDSQL_INSTANCE_ID 형식으로 입력합니다.

  2. IP 주소 필드에 Cloud SQL 인스턴스에 연결하는 데 필요한 IP 주소를 입력합니다.

  3. 포트 필드에 3306을 입력합니다.

  4. Hive 데이터베이스 이름 필드에 자체 관리형 Hive 메타스토어의 백엔드로 사용할 데이터베이스의 이름을 입력합니다.

  5. 사용자 이름 필드에 Cloud SQL을 Hive Metastore에 연결하는 데 사용하는 사용자 이름을 입력합니다.

  6. 비밀번호 필드에 Cloud SQL을 Hive Metastore에 연결하는 데 사용하는 비밀번호를 입력합니다.

SOCKS5 프록시 서비스

  1. 프록시 서브넷 필드에 Cloud SQL VPC 네트워크에 사용된 서브네트워크를 입력합니다. 이 서브넷은 중간 SOCKS5 프록시를 배포하는 데 사용됩니다.

  2. NAT 서브넷 필드에 Dataproc Metastore 서비스에서 중간 프록시에 액세스하기 위해 연결을 제공하는 Private Service Connect 서브넷을 입력합니다. 서브넷 크기의 프리픽스 길이는 /29 이상이어야 합니다.

  3. 계속을 클릭합니다.

    변경 데이터 캡처(CDC) 탭이 열리고 Datastream용 Cloud SQL 데이터베이스 구성 구성 설정이 표시됩니다.

데이터 스트림에 대한 Cloud SQL 데이터베이스 구성

  1. 사용자 이름 필드에 Datastream에서 사용하는 Cloud SQL CDC에 로그인하기 위해 사용하는 사용자 이름을 입력합니다.

  2. 비밀번호 필드에 Datastream에서 사용하는 Cloud SQL CDC에 로그인하는 데 사용하는 비밀번호를 입력합니다.

  3. VPC 네트워크 필드에서 Datastream이 CDC에 비공개 연결을 설정하는 데 사용하는 Cloud SQL 인스턴스와 동일한 VPC 네트워크에 네트워크를 입력합니다.

  4. 서브넷 IP 범위 필드에 /29 이상의 서브넷 IP 범위를 입력합니다. Datastream은 이 IP를 사용하여 VPC 네트워크에 대한 피어링을 설정합니다.

  5. 리버스 프록시 서브넷 필드에 Cloud SQL과 동일한 VPC 네트워크에서 만든 서브네트워크를 입력합니다. Datastream은 이 서브네트워크를 사용합니다. 서브네트워크는 Datastream CDC에 대한 리버스 프록시 연결을 호스팅하기 위해 사용됩니다. 서브넷은 Dataproc Metastore 서비스와 동일한 리전에 구성되어 있어야 합니다.

GCS 구성

  1. 버킷 ID의 경우 마이그레이션 중 CDC 데이터를 저장할 Cloud Storage 경로를 선택합니다.

  2. 루트 경로 필드에 Cloud Storage 버킷 내부의 루트 경로를 입력합니다. 스트림 이벤트 데이터가 이 경로에 기록됩니다.

  3. 만들기를 클릭합니다.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
  -X POST -d \
  '{
    "migration_execution": {
      "cloud_sql_migration_config": {
        "cloud_sql_connection_config": {
          "instance_connection_name": INSTANCE_CONNECTION_NAME,
          "hive_database_name": "HIVE_DATABASE_NAME",
          "ip_address": "IP_ADDRESS",
          "port": 3306,
          "username": "CONNECTION_USERNAME",
          "password": "CONNECTION_PASSWORD",
          "proxy_subnet": "PROXY_SUBNET",
          "nat_subnet": "NAT_SUBNET"
        },
        "cdc_config": {
          "username": "CDC_USENAME",
          "password": "CDC_PASSWORD",
          "vpc_network": "VPC_NETWORK",
          "subnet_ip_range": "SUBNET_IP_RANGE",
          "reverse_proxy_subnet": "REVERSE_PROXY_SUBNET_ID",
          "bucket": "BUCKET_NAME",
          "root_path": "ROOT_PATH",
        }
      }
    }
}' \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:startMigration

다음을 바꿉니다.

  • SERVICE: Dataproc Metastore 서비스의 이름 또는 ID입니다.
  • PROJECT_ID: Dataproc Metastore 서비스가 있는 Google Cloud 프로젝트의 프로젝트 ID입니다.
  • LOCATION: Dataproc Metastore 서비스가 있는 Google Cloud 리전입니다.

Cloud SQL 마이그레이션 구성

  • INSTANCE_CONNECTION_NAME: Cloud SQL 데이터베이스의 인스턴스 연결 이름이며 형식은 PROJECT_ID/LOCATION/CLOUDSQL_INSTANCE_ID입니다.
  • HIVE_DATABASE_NAME: Cloud SQL에 연결된 자체 관리형 Hive 데이터베이스의 이름입니다.
  • IP_ADDRESS: Cloud SQL 인스턴스에 연결하는 데 필요한 IP 주소입니다.
  • CONNECTION_USERNAME: Cloud SQL을 Hive Metastore에 연결하는 데 사용하는 사용자 이름입니다.
  • CONNECTION_PASSWORD는 Cloud SQL을 Hive Metastore에 연결하는 데 사용하는 비밀번호입니다.
  • PROXY_SUBNET: Cloud SQL VPC 네트워크에서 사용되는 서브네트워크입니다. 이 서브네트워크는 전환 네트워크 간에 연결을 제공하기 위해 중간 프록시를 호스팅합니다.
  • NAT_SUBNET: 중간 프록시에 액세스하기 위해 Dataproc Metastore 서비스에서 연결을 제공하는 Private Service Connect 서브넷입니다. 서브넷 크기의 프리픽스 길이는 /29 이상이고 IPv4 범위에 있어야 합니다.

CDC 구성

  • CDC_USERNAME: Datastream 서비스가 Cloud SQL에 로그인하는 데 사용하는 사용자 이름입니다.
  • CDC_PASSWORD: Datastream 서비스가 Cloud SQL에 로그인하는 데 사용하는 비밀번호입니다.
  • VPC_NETWORK: Datastream에서 CDC에 대한 비공개 연결을 설정하는 데 사용되는 Cloud SQL 인스턴스와 동일한 VPC 네트워크에 있는 네트워크입니다.
  • SUBNET_IP_RANGE: Datastream에서 VPC 네트워크에 대한 피어링을 설정하는 데 사용하는 /29 이상의 서브넷 IP 범위입니다.
  • REVERSE_PROXY_SUBNET_ID: Datastream에서 사용하는 Cloud SQL 인스턴스와 동일한 VPC 네트워크에 있는 서브네트워크입니다. 서브네트워크는 Datastream CDC에 대한 리버스 프록시 연결을 호스팅하기 위해 사용됩니다. 서브넷은 Dataproc Metastore 서비스와 동일한 리전에 구성되어야 합니다.
  • BUCKET_NAME: 마이그레이션 중에 CDC 데이터를 저장할 Cloud Storage 경로입니다.
  • ROOT_PATH: Cloud Storage 버킷 내의 루트 경로입니다. 스트림 이벤트 데이터가 이 경로에 기록됩니다.

이전 완료

마이그레이션을 완료하면 Dataproc Metastore가 Spanner에 연결하고 Spanner를 백엔드 데이터베이스로 사용하기 시작합니다.

마이그레이션이 완료되면 다음과 같은 상태 변경이 트리거됩니다.

  • Dataproc Metastore가 ACTIVE 상태로 돌아갑니다.
  • 마이그레이션 실행 상태가 SUCCEEDED로 이동합니다.

Console

  1. Google Cloud 콘솔에서 Dataproc Metastore 페이지를 엽니다.

  2. 페이지 상단에서 데이터 마이그레이션을 클릭합니다.

    데이터 마이그레이션 페이지가 열리고 완료된 관리형 마이그레이션이 표시됩니다.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
  -X POST -d '' \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:completeMigration

다음을 바꿉니다.

  • SERVICE: Dataproc Metastore 서비스의 이름 또는 ID입니다.
  • PROJECT_ID: Dataproc Metastore 서비스가 있는 Google Cloud 프로젝트의 프로젝트 ID입니다.
  • LOCATION: Dataproc Metastore 서비스가 있는 Google Cloud 리전입니다.

이전 취소

마이그레이션을 취소하면 Dataproc Metastore는 모든 변경사항을 되돌리고 Spanner 데이터베이스 유형을 백엔드 데이터베이스로 사용하기 시작합니다. 이전 중에 전송된 모든 데이터는 삭제됩니다.

마이그레이션을 취소하면 다음과 같은 상태 변경이 트리거됩니다.

  • Dataproc Metastore가 ACTIVE 상태로 돌아갑니다.
  • 마이그레이션 실행 상태가 CANCELLED로 이동합니다.

Console

  1. Google Cloud 콘솔에서 Dataproc Metastore 페이지를 엽니다.

  2. 페이지 상단에서 데이터 마이그레이션을 클릭합니다.

    데이터 마이그레이션 페이지가 열리고 취소된 관리형 마이그레이션이 표시됩니다.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
   -X POST -d '' \
   https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:cancelMigration

다음을 바꿉니다.

  • SERVICE_NAME: Dataproc Metastore 서비스의 이름 또는 ID입니다.
  • PROJECT_ID: Dataproc Metastore 서비스가 있는 Google Cloud 프로젝트의 프로젝트 ID입니다.
  • LOCATION: Dataproc Metastore 서비스가 있는 Google Cloud 리전입니다.

마이그레이션 세부정보 가져오기

단일 관리형 마이그레이션에 대한 세부정보를 가져옵니다.

Console

  1. Google Cloud 콘솔에서 Dataproc Metastore 페이지를 엽니다.

  2. 페이지 상단에서 데이터 마이그레이션을 클릭합니다.

    데이터 마이그레이션 페이지가 열리고 관리형 마이그레이션이 표시됩니다.

    마이그레이션 세부정보를 더 가져오려면 관리형 마이그레이션의 이름을 클릭합니다.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X GET \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

다음을 바꿉니다.

  • SERVICE: Dataproc Metastore 서비스의 이름 또는 ID입니다.
  • PROJECT_ID: Dataproc Metastore 서비스가 있는 Google Cloud 프로젝트의 프로젝트 ID입니다.
  • LOCATION: Dataproc Metastore 서비스가 있는 Google Cloud 리전입니다.
  • MIGRATION_ID: Dataproc Metastore 마이그레이션의 이름 또는 ID입니다.

마이그레이션 나열

관리형 마이그레이션을 나열합니다.

Console

  1. Google Cloud 콘솔에서 Dataproc Metastore 페이지를 엽니다.

  2. 페이지 상단에서 데이터 마이그레이션을 클릭합니다.

    데이터 마이그레이션 페이지가 열리고 관리형 마이그레이션이 표시됩니다.

  3. 명령어가 마이그레이션을 나열했는지 확인합니다.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X GET \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

다음을 바꿉니다.

  • SERVICE: Dataproc Metastore 서비스의 이름 또는 ID입니다.
  • PROJECT_ID: Dataproc Metastore 서비스가 있는 Google Cloud 프로젝트의 프로젝트 ID입니다.
  • LOCATION: Dataproc Metastore 서비스가 있는 Google Cloud 리전입니다.

마이그레이션 삭제

관리형 마이그레이션을 삭제합니다.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X DELETE \
   https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

다음을 바꿉니다.

  • SERVICE: Dataproc Metastore 서비스의 이름 또는 ID입니다.
  • PROJECT_ID: Dataproc Metastore 서비스가 있는 Google Cloud 프로젝트의 프로젝트 ID입니다.
  • LOCATION: Dataproc Metastore 서비스가 있는 Google Cloud 리전입니다.
  • MIGRATION_ID: Dataproc Metastore 마이그레이션의 이름 또는 ID입니다.

다음 단계