2013-10-16 32 views
6

我們對Amazon RedShift中的大型數據集進行了一些聚合,並且我們在MySQL中有一些相對較少的數據。對於RedShift中的一些連接,我們需要MySQL中的數據。將MySql數據同步到RedShift的最佳方式是什麼?像oracle中的遠程視圖那樣在紅移中有這樣的事情嗎?或者我應該編程查詢MySql並在RedShift中插入/更新?將MySql中的數據同步到Amazon RedShift

回答

3

當Redshift中的連接需要MySQL數據時,我們通常只是將它從一個發送到另一個。

這意味着:

  1. 紅移:創建一個類似的表架構(銘記紅移/ PSQL的特殊性)
  2. MySQL的:轉儲數據表(CSV格式)
  3. 荏苒出口,並將其發送到S3
  4. 紅移:截斷表中,使用導入的所有數據COPY

步驟2到4可以編寫腳本,並允許您在必要時或定期向Redshift發送新數據。

7

Redshift現在通過SSH支持loading data from remote hosts。這種技術包括:

  1. 從集羣到authorized_keys文件遠程主機(S)
  2. 允許從羣集節點
  3. 的IP地址的遠程主機(S)SSH訪問的添加公鑰
  4. 將JSON清單上傳到S3,指定要在遠程主機上執行的遠程主機,公鑰和命令
  5. 運行帶有指定清單文件和AWS憑證的COPY命令

清單指定的命令運行一個任意命令,該命令通過Redshift COPY命令打印format suitable for ingest中的文本輸出。

-2

檢查這個simplest way加載Mysql數據到紅移。當您的期望只是將初始數據快照加載到紅移時,請嘗試使用該免費解決方案。此外,您將獲得模式遷移,並排查詢控制檯以及整個加載過程的統計報告(帶圖表)。

+0

請不要發佈,以促進您的文章,其中有沒有解決辦法,但只是一個參考。這不是一個領先的生成門戶。 – lazywiz

0

什麼是Oracle中的「遠程視圖」?

無論如何,如果你可以從表格中提取數據到CSV文件,你還有一個腳本選項。您可以使用Python/boto/psycopg2組合將您的CSV加載腳本編寫到Amazon Redshift。

在我MySQL_To_Redshift_Loader我做了以下內容:

  1. 從MySQL提取數據到臨時文件。

    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. 壓縮和加載數據到S3使用boto Python模塊和多載。

    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) 
    
相關問題