2013-10-16 2 views
6

Amazon RedShift의 거대한 데이터 세트에서 일부 집계를 수행하며 MySQL에는 상대적으로 적은 양의 데이터가 있습니다. RedShift의 조인 중 일부는 MySQL에 데이터가 필요합니다. MySql 데이터를 RedShift와 동기화하는 가장 좋은 방법은 무엇입니까? 오라클의 원격보기와 같은 적색 변이가 있습니까? 아니면 프로그래밍 방식으로 MySql을 쿼리하고 RedShift에 삽입/업데이트해야합니까?MySql의 데이터를 Amazon RedShift와 동기화

답변

3

Redshift에서 조인을하기 위해 MySQL 데이터가 필요한 경우 일반적으로이를 하나에서 다른 것으로 전송합니다.

그것은 의미 :

  1. Redshift에 : 유사한 테이블 스키마 생성 (/ PSQL의 특수성을 염두 적색 편이에 베어링)
  2. MySQL의 : 수출을 지퍼로 잠그는
  3. (CSV 형식) 데이터 테이블을 덤프, 테이블 잘라 내기 및 사용하여 모든 데이터를 가져 COPY

단계 : 및 S3

  • Redshift에로 보내기 2에서 4까지는 스크립팅이 가능하며 필요하거나 정기적으로 Redshift로 새로운 데이터를 보낼 수 있습니다.

  • 7

    Redshift는 이제 SSH를 통해 loading data from remote hosts을 지원합니다. 이 기술은 포함한다 :

    1. 클러스터 노드
    2. 의 IP 주소에서 원격 호스트 (들)에 대한 SSH 액세스를 허용 원격 호스트 (들)
    3. 에서의 authorized_keys 파일에 클러스터에서 공개 키를 추가
    4. 원격 호스트에서 실행할 원격 호스트, 공개 키 및 명령을 지정하는 S3에 JSON 매니페스트 업로드
    5. 지정된 매니페스트 파일 및 AWS 자격 증명으로 COPY 명령 실행

    매니페스트에 의해 지정된 명령은 Redshift COPY 명령으로 format suitable for ingest에 텍스트 출력을 인쇄하는 임의의 명령을 실행합니다.

    -2

    simplest way을 확인하여 MySQL 데이터를 적색 변이로로드하십시오. 초기 데이터 스냅 샷을 적색 변이로로드하기 만하면 무료 솔루션을 사용해보십시오. 또한 스키마 마이그레이션, 나란히 배치 된 쿼리 콘솔 및 전체로드 프로세스의 일부 통계 보고서 (차트 포함)를 얻을 수 있습니다.

    +0

    해결책하지만 단지 참조가 없습니다 귀하의 게시물을 촉진하기 위해 게시하지 마십시오. 이것은 리드 생성 포털이 아닙니다. – lazywiz

    0

    Oracle에서 "원격보기"란 무엇입니까?

    어쨌든 테이블에서 CSV 파일로 데이터를 추출 할 수 있다면 하나 이상의 스크립팅 옵션이 있습니다. Python/boto/psycopg2 콤보를 사용하여 Amazon Redshift로 CSV로드를 스크립팅 할 수 있습니다. 내 MySQL_To_Redshift_Loader 나는 다음을 수행에서

    는 : 임시 파일에 MySQL의에서

    1. 데이터를 추출. S3에

      loadConf=[ db_client_dbshell ,'-u', opt.mysql_user,'-p%s' % opt.mysql_pwd,'-D',opt.mysql_db_name, '-h', opt.mysql_db_server]  
      ... 
      q=""" 
      %s %s 
      INTO OUTFILE '%s' 
      FIELDS TERMINATED BY '%s' 
      ENCLOSED BY '%s' 
      LINES TERMINATED BY '\r\n'; 
      """ % (in_qry, limit, out_file, opt.mysql_col_delim,opt.mysql_quote) 
      p1 = Popen(['echo', q], stdout=PIPE,stderr=PIPE,env=env) 
      p2 = Popen(loadConf, stdin=p1.stdout, stdout=PIPE,stderr=PIPE) 
      ... 
      
    2. 압축 하중 데이터 boto 파이썬 모듈 및 다중 업로드를 사용.

      conn = boto.connect_s3(AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) 
      bucket = conn.get_bucket(bucket_name) 
      k = Key(bucket) 
      k.key = s3_key_name 
      k.set_contents_from_file(file_handle, cb=progress, num_cb=20, 
      reduced_redundancy=use_rr) 
      
    3. 사용 psycopg2 COPY 명령은 테이블을 적색 편이에 데이터를 추가합니다.

      sql=""" 
      copy %s from '%s' 
      CREDENTIALS 'aws_access_key_id=%s;aws_secret_access_key=%s' 
      DELIMITER '%s' 
      FORMAT CSV %s 
      %s 
      %s 
      %s;""" % (opt.to_table, fn, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY,opt.delim,quote,gzip, timeformat, ignoreheader) 
      
    관련 문제