Amazon Redshift에서 데이터 마이그레이션

개요

이 문서에서는 Amazon Redshift에서 BigQuery로 데이터를 마이그레이션하는 프로세스를 설명합니다.

BigQuery Data Transfer Service를 사용하면 Amazon Redshift 데이터 웨어하우스의 데이터를 BigQuery로 복사할 수 있습니다. 이 서비스는 GKE의 마이그레이션 에이전트와 연결되어 Amazon Redshift에서 Amazon S3 버킷의 스테이징 영역으로 언로드 작업을 트리거합니다. 그런 다음 BigQuery Data Transfer Service는 Amazon S3 버킷의 데이터를 BigQuery로 전송합니다.

다음 다이어그램은 마이그레이션 중에 Amazon Redshift 데이터 웨어하우스와 BigQuery 사이의 전체적인 데이터 흐름을 나타낸 것입니다.

시작하기 전에

이 섹션에서는 Amazon Redshift에서 BigQuery로 데이터 마이그레이션을 설정하는 단계별 프로세스를 설명합니다. 단계는 다음과 같습니다.

  • Google Cloud Platform에 대한 기본 요건을 충족하고 권한을 설정합니다.
  • Amazon Redshift 클러스터에 대한 액세스 권한을 부여합니다.
  • Amazon S3 스테이징 버킷에 대한 액세스 권한을 부여합니다.
  • BigQuery Data Transfer Service를 사용하여 마이그레이션을 설정합니다. 필요한 사항은 다음과 같습니다.
    • Amazon Redshift JDBC URL. 이 지침을 따라 JDBC URL을 확인하세요.
    • Amazon Redshift 데이터베이스의 사용자 이름과 비밀번호
    • AWS 액세스 키 쌍. S3 버킷에 대한 액세스 권한 부여 단계에서 확인할 수 있습니다.
    • 임시로 데이터를 스테이징하는 데 사용할 Amazon S3 버킷의 URI. 불필요한 요금을 피하려면 이 버킷에 수명 주기 정책을 설정하는 것이 좋습니다. 모든 데이터를 BigQuery로 전송하는 데 충분한 시간을 확보하려면 만료 시간을 24시간으로 설정하는 것이 좋습니다.

Google Cloud Platform 요구 사항

Amazon Redshift 데이터 웨어하우스 마이그레이션을 성공적으로 수행하려면 Google Cloud Platform에 대한 다음 기본 요건을 충족해야 합니다.

  1. 마이그레이션 데이터를 저장할 Google Cloud Platform 프로젝트를 선택하거나 만듭니다.

    • GCP Console에서 리소스 관리 페이지로 이동합니다.

      리소스 관리 페이지로 이동

    • 프로젝트를 선택하거나 만들기를 클릭하여 새 GCP 프로젝트를 만듭니다.

  2. BigQuery Data Transfer Service API를 사용 설정합니다.

    Google Cloud Platform Console의 BigQuery Data Transfer Service API 페이지에서 사용 설정 버튼을 클릭합니다.

    API 사용 설정

    BigQuery는 새 프로젝트에서 자동으로 사용 설정됩니다. 기존 프로젝트의 경우 BigQuery API를 사용 설정해야 할 수 있습니다. 녹색 체크표시는 API를 이미 사용 설정했음을 나타냅니다.

    사용 설정된 API

  3. 데이터를 저장할 BigQuery 데이터세트를 만듭니다. 테이블을 만들 필요는 없습니다.

  4. 전송을 설정할 때 권한 창을 볼 수 있도록 브라우저의 bigquery.cloud.google.com에서 팝업을 허용합니다. 전송을 관리하려면 BigQuery Data Transfer Service 권한을 허용해야 합니다.

Amazon Redshift 클러스터에 대한 액세스 권한 부여

Amazon의 지침을 따라 다음 IP 주소를 허용합니다. 데이터세트의 위치에 해당하는 IP 주소를 허용하거나 아래 표의 모든 IP 주소를 허용할 수 있습니다. 이 Google 소유의 IP 주소는 Amazon Redshift 데이터 마이그레이션용으로 예약되어 있습니다.

미국
(us multi-region)
도쿄
(asia-northeast1)
EU
(eu multi-region)
런던
(europe-west2)
오스트레일리아
(australia-southeast1)
35.185.196.212
35.197.102.120
35.185.224.10
35.185.228.170
35.197.5.235
35.185.206.139
35.197.67.234
35.197.38.65
35.185.202.229
35.185.200.120
34.85.11.246
34.85.30.58
34.85.8.125
34.85.38.59
34.85.31.67
34.85.36.143
34.85.32.222
34.85.18.128
34.85.23.202
34.85.35.192
34.76.156.158
34.76.156.172
34.76.136.146
34.76.1.29
34.76.156.232
34.76.156.81
34.76.156.246
34.76.102.206
34.76.129.246
34.76.121.168
35.189.119.113
35.189.101.107
35.189.69.131
35.197.205.93
35.189.121.178
35.189.121.41
35.189.85.30
35.197.195.192
35.189.33.150
35.189.38.5
35.189.29.88
35.189.22.179
35.189.20.163
35.189.29.83
35.189.31.141
35.189.14.219

Amazon S3 버킷에 대한 액세스 권한 부여

Amazon Redshift 데이터를 BigQuery로 전송할 때 스테이징 영역으로 사용할 S3 버킷이 필요합니다. Amazon의 자세한 지침은 여기에서 확인할 수 있습니다.

  1. 전용 Amazon IAM 사용자를 만들고 해당 사용자에게만 Redshift에 대한 읽기 액세스 권한과 S3에 대한 읽기/쓰기 액세스 권한을 부여하는 것이 좋습니다. 다음과 같은 기존 정책을 적용하면 됩니다.

    Redshift 마이그레이션 Amazon 권한

  2. Amazon IAM 사용자 액세스 키 쌍을 만듭니다.

선택사항: 별도의 마이그레이션 큐로 작업 부하 제어

마이그레이션용 Amazon Redshift 큐를 정의하여 마이그레이션에 사용되는 리소스를 제한하고 구분할 수 있습니다. 이러한 마이그레이션 큐는 최대 동시 실행 쿼리 수를 사용하여 구성할 수 있습니다. 그런 다음 특정 마이그레이션 사용자 그룹을 큐와 연결하고 BigQuery로 데이터를 전송하도록 마이그레이션을 설정할 때 이러한 사용자 인증 정보를 사용할 수 있습니다. 전송 서비스만 마이그레이션 큐에 액세스할 수 있습니다.

Amazon Redshift 마이그레이션 설정

Amazon Redshift 전송을 설정하려면 다음 안내를 따르세요.

콘솔

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 전송을 클릭합니다.

  3. 전송 추가를 클릭합니다.

  4. 새 전송 페이지에서 다음을 수행합니다.

    • 소스에서 마이그레이션: Amazon Redshift를 선택합니다.
    • 표시 이름에 전송 이름(예: My migration)을 입력합니다. 표시 이름은 나중에 수정해야 할 경우에 대비해 전송을 식별할 수 있는 값이면 됩니다.
    • 대상 데이터세트에서 적절한 데이터세트를 선택합니다.

      새로운 Amazon Redshift 마이그레이션 일반

  5. 데이터 소스 세부정보에서 Amazon Redshift 전송에 대한 구체적인 세부정보를 계속 작성합니다.

    • JDBC connection url for Amazon Redshift(Amazon Redshift의 JDBC 연결 URL)에 Amazon Redshift 클러스터에 액세스하는 데 사용할 JDBC URL을 입력합니다.
    • Username of your database(데이터베이스 사용자 이름)에 마이그레이션하려는 Amazon Redshift 데이터베이스의 사용자 이름을 입력합니다.
    • Password of your database(데이터베이스 비밀번호)에 데이터베이스 비밀번호를 입력합니다.
    • 액세스 키 ID비밀 액세스 키S3 버킷에 대한 액세스 권한 부여에서 확인한 액세스 키 쌍을 입력합니다.
    • Amazon S3 URI에 스테이징 영역으로 사용할 S3 버킷의 URI를 입력합니다.
    • Amazon Redshift Schema에 마이그레이션하려는 Amazon Redshift Schema를 입력합니다.
    • Table name patterns(테이블 이름 패턴)에 스키마에서 테이블 이름 일치에 사용할 이름이나 패턴을 지정합니다. 정규 표현식을 사용하여 <table1Regex>;<table2Regex> 형식의 패턴을 지정할 수 있습니다. 이 패턴은 자바 정규 표현식 구문을 따라야 합니다.

      새로운 Amazon Redshift 마이그레이션 데이터 소스 세부정보

    • (선택사항) 알림 옵션 섹션에서 다음을 수행합니다.

      • 전환을 클릭해서 이메일 알림을 사용 설정합니다. 이 옵션을 사용 설정하면 전송 실행이 실패할 때 전송 관리자에게 이메일 알림이 발송됩니다.
      • Cloud Pub/Sub 주제 선택에서 주제 이름을 선택하거나 주제 만들기를 클릭합니다. 이 옵션은 전송의 Cloud Pub/Sub 실행 알림을 구성합니다. 전송 실행 알림은 현재 알파 버전입니다.

        Cloud Pub/Sub 주제

  6. 저장을 클릭합니다.

  7. 웹 UI에 이 전송의 리소스 이름을 포함한 모든 전송 설정 세부정보가 표시됩니다.

    전송 확인

기본 UI

  1. 기본 BigQuery 웹 UI로 이동합니다.

    기본 BigQuery 웹 UI로 이동

  2. 전송을 클릭합니다.

  3. 전송 추가를 클릭합니다.

  4. 새 전송 페이지에서 다음을 수행합니다.

    • 소스에서 마이그레이션: Amazon Redshift를 선택합니다.
    • 표시 이름에 전송 이름(예: My Migration)을 입력합니다. 표시 이름은 나중에 수정해야 할 경우에 대비해 전송을 식별할 수 있는 값이면 됩니다.
    • 대상 데이터세트에서 적절한 데이터세트를 선택합니다.
    • JDBC connection url for Amazon Redshift(Amazon Redshift의 JDBC 연결 URL)에 Amazon Redshift 클러스터에 액세스하는 데 사용할 JDBC URL을 입력합니다.
    • Username of your database(데이터베이스 사용자 이름)에 마이그레이션하려는 Amazon Redshift 데이터베이스의 사용자 이름을 입력합니다.
    • Password of your database(데이터베이스 비밀번호)에 데이터베이스 비밀번호를 입력합니다.
    • 액세스 키 ID 및 비밀 액세스 키S3 버킷에 대한 액세스 권한 부여에서 확인한 액세스 키 쌍을 입력합니다.
    • Amazon S3 URI에 스테이징 영역으로 사용할 S3 버킷의 URI를 입력합니다.
    • Amazon Redshift Schema에 테이블을 마이그레이션하려는 Amazon Redshift Schema를 입력합니다.
    • Table name patterns(테이블 이름 패턴)에 데이터베이스 스키마에서 테이블 이름 일치에 사용할 이름이나 패턴을 지정합니다. 정규 표현식을 사용하여 <table1Regex>;<table2Regex> 형식의 패턴을 지정할 수 있습니다. 이 패턴은 자바 정규 표현식 구문을 따라야 합니다.

    새로운 Amazon Redshift 마이그레이션 데이터 소스 세부정보

    • (선택사항) 고급 섹션을 펼쳐서 전송 실행 알림을 구성합니다. 전송 실행 알림은 현재 알파 버전입니다.

      • Cloud Pub/Sub 주제주제 이름(예: projects/myproject/topics/mytopic)을 입력합니다.
      • 전송 실행 실패 시 이메일 알림을 허용하려면 이메일 알림 전송을 선택합니다.
      • 전송 설정 시 사용 중지됨을 선택하지 않습니다. 기존 전송을 사용 중지하려면 전송 작업을 참조하세요.

      Cloud Pub/Sub 주제

  5. 추가를 클릭합니다.

  6. 메시지가 표시되면 허용을 클릭하여 BigQuery Data Transfer Service에 전송을 관리할 수 있는 권한을 부여합니다. 권한 창을 보려면 bigquery.cloud.google.com에서 브라우저 팝업을 허용해야 합니다.

    전송 허용

  7. 웹 UI에 이 전송의 리소스 이름을 포함한 모든 전송 설정 세부정보가 표시됩니다.

    전송 확인

CLI

bq mk 명령어를 입력하고 전송 생성 플래그 --transfer_config를 지정합니다. 다음 플래그도 필요합니다.

  • --project_id
  • --data_source
  • --target_dataset
  • --display_name
  • --params

    bq mk --transfer_config --project_id=[PROJECT_ID] --data_source=[DATA_SOURCE] --target_dataset=[DATASET] --display_name=[NAME] --params='[PARAMETERS]'
    

각 항목의 의미는 다음과 같습니다.

  • --project_id는 Google Cloud Platform 프로젝트 ID입니다. --project_id를 지정하지 않으면 기본 프로젝트가 사용됩니다.
  • --data_source는 데이터 소스(redshift)입니다.
  • --target_dataset는 전송 구성을 위한 BigQuery 대상 데이터세트입니다.
  • --display_name은 전송 구성의 표시 이름입니다. 전송 이름은 나중에 수정해야 할 경우에 전송을 식별할 수 있는 값이면 됩니다.
  • --params에는 JSON 형식으로 생성된 전송 구성의 매개변수가 포함됩니다. (예: --params='{"param":"param_value"}'). Amazon Redshift 마이그레이션의 경우 content_owner_idtable_suffix 매개변수를 지정해야 합니다.

Amazon Redshift 전송 구성에 필요한 매개변수는 다음과 같습니다.

  • jdbc_url: Redshift 클러스터를 찾을 때 사용되는 JDBC 연결 URL
  • database_username: 데이터베이스에 액세스하여 지정된 테이블을 언로드하는 데 사용되는 사용자 이름
  • database_password: 데이터베이스에 액세스하여 지정된 테이블을 언로드할 때 사용자 이름과 함께 사용되는 비밀번호
  • access_key_id: AWS에 대한 요청에 서명하는 데 사용되는 액세스 키 ID
  • secret_access_key: AWS에 대한 요청에 서명할 때 액세스 키 ID와 함께 사용되는 비밀 액세스 키
  • s3_bucket: 's3://'으로 시작되며 사용할 임시 파일의 프리픽스를 지정하는 Amazon S3 URI
  • redshift_schema: 마이그레이션할 모든 테이블이 포함된 Redshift 스키마
  • table_name_patterns: 세미콜론(;)으로 구분된 테이블 이름 패턴. 테이블 패턴은 마이그레이션할 테이블의 정규 표현식입니다. 지정하지 않을 경우 데이터베이스 스키마의 모든 테이블이 마이그레이션됩니다.

예를 들어 다음은 mydataset라는 대상 데이터세트와 ID가 google.com:myproject인 프로젝트를 사용하여 My Transfer라는 Amazon Redshift 전송을 만드는 명령어입니다.

bq mk --transfer_config --project_id=google.com:myproject --data_source=redshift --target_dataset=mydataset --display_name='My Transfer' --params='{"jdbc_url":"jdbc:postgresql://test-example-instance.sample.us-west-1.redshift.amazonaws.com:5439/dbname","database_username":"my_username","database_password":"1234567890","access_key_id":"A1B2C3D4E5F6G7H8I9J0","secret_access_key":"1234567890123456789012345678901234567890","s3_bucket":"s3://bucket/prefix","redshift_schema":"public","table_name_patterns":"table_name"}'

API

projects.locations.transferConfigs.create 메소드를 사용하고 TransferConfig 리소스의 인스턴스를 제공합니다.

할당량 및 한도

BigQuery에는 테이블별 로드 작업당 15TB의 로드 할당량이 있습니다. 내부적으로, Amazon Redshift는 테이블 데이터를 압축하므로 내보낸 테이블 크기는 Amazon Redshift가 보고한 테이블 크기보다 큽니다. 15TB보다 큰 테이블을 마이그레이션할 계획인 경우에는 bq-dts-support@google.com에 먼저 문의하시기 바랍니다.

이 서비스를 사용하면 Google 외부에서 비용이 발생할 수 있습니다. 자세한 내용은 Amazon RedshiftAmazon S3 가격 책정 페이지를 참조하세요.

Amazon S3의 일관성 모델로 인해 일부 파일이 BigQuery에 전송할 대상에서 제외될 수 있습니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.