2017-03-23 55 views
0

比AWS數據管道更新,所以任何幫助將不勝感激。我已使用管道模板RDStoS3CopyActivity來提取RDS MySQL中的表的所有內容。似乎運作良好。但是還有90個其他表格被提取並轉儲到S3。我無法想象90管道或每個表的一個。將多個RDS MySQL表提取到S3

解決此任務的最佳方法是什麼?如何通過管道指令來遍歷表名的列表?

回答

0

我不確定這是否會得到迴應。但是,在這個探索的早期階段,我開發了一個似乎適合初步目的的流水線 - 從10個RDS MySQL表中提取數據,並將每個數據表複製到S3上各自的子存儲桶。

邏輯相當簡單。

  • 爲RDS MySQL配置連接。
  • 通過在每個表的「選擇查詢」字段中指定來提取數據。
  • 刪除複製活動並鏈接上面的每個表。它在指定的EC2實例上運行。如果您運行的是昂貴的查詢,請確保選擇具有足夠CPU和內存的相應EC2實例。此步驟將臨時存放在ec2 tmp文件系統中的提取轉儲複製到您將在下一步設置的指定S3存儲桶中。
  • 最後,指定的/目的地的目的地。

默認情況下,提取並加載到S3存儲桶的數據將以逗號分隔。如果需要製表符分隔,則在最後一個目標S3目標中: - 添加可選字段..>選擇數據格式。 - 創建一個新的分頁標籤。這將出現在「其他」類別下。 - 給它一個名字。我稱之爲分隔標籤。 - 類型:TSV。將鼠標懸停在「類型」上可瞭解更多其他數據格式。 - 列分隔符: - 如果表是

0

都在同一個RDS爲什麼不使用同一個SQLActivity管道\噸(我可以爲類型已經被指定爲TSV將此處留空)

截圖 My workflow example 一個包含多個到S3的卸載命令的SQL語句?

您可以只寫一個查詢並使用一個管道。

+0

我們可以在腳本字段中編寫一個mysqldump -uroot -p schema tablename> tablename.sql來代替「select * from table」嗎?這是你的意思嗎? – dat789

+0

@ dat789哎呦。我認爲你的解決方案會最好。我把它看作'Redshift'而不是'RDS'直接向S3提供卸載和複製選項。您的答案可能效果最好,看起來像它在這裏做的一些東西 - http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-copymysql-cli.html – Fernando

+0

雖然我發佈的解決方案可能工作,注意AWS Data Pipeline每個管道的缺省值爲100個對象也很有用。你放在畫布上的每個對象都是一個數字。對我來說,每個表都是唯一的(不能聯合),我必須有3個對象{rds mysql對象從表名中選擇;複製對象活動;輸出到S3 datanode}每個表。您可以要求AWS增加管道中允許的對象數量,但如果要執行超過100個對象,那將是一件痛苦的事情。我選擇了另一種解決方案。 – dat789