簡體   English   中英

將數據從MySql同步到Amazon RedShift

[英]Synchronize data from MySql to Amazon RedShift

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

Redshift現在支持通過SSH 從遠程主機加載數據 該技術涉及:

  1. 將群集中的公鑰添加到遠程主機上的authorized_keys文件
  2. 允許從群集節點的IP地址對遠程主機進行SSH訪問
  3. 將JSON清單上載到S3,指定遠程主機,公鑰和要在遠程主機上執行的命令
  4. 使用指定的清單文件和AWS憑據運行COPY命令

清單指定的命令運行任意命令,該命令以適合 Redshift COPY命令攝取格式打印文本輸出。

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

它意味着:

  1. Redshift:創建類似的表模式(記住Redshift / PSQL的特殊性)
  2. MySQL:轉儲數據表(采用csv格式)
  3. 壓縮導出,並將其發送到S3
  4. Redshift:截斷表,並使用COPY導入所有數據

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

什么是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. 使用boto Python模塊和分段上傳將數據壓縮並加載到S3。

     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命令將數據附加到Redshift表。

     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) 

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM