2016-12-29 42 views
0

我們正在探索將Redshift用於倉庫,並且我們需要將新數據從現有的本地postgres數據庫移至Redshift。看起來你可以用Pipeline和模板來做到這一點,如果你的主數據庫在RDS中,但是如果你的數據庫是本地數據庫,你能用Pipeline來做到嗎?使用AWS Pipeline將本地postgres的增量副本轉換爲Redshift

+0

你可以做到這一點,但管道不是爲那個perpose做的... –

回答

0

由於您定期批量同步,因此您可能需要考慮將數據推送到S3,這很容易從本地執行,然後通過COPY命令將其加載到紅移中。它速度快,可靠,你可以在s3中獲得免費(便宜)的備份作爲副作用。

您可以使用aws s3 cpawscli蟒蛇工具來推你的CSV的Postgres轉儲喜歡的東西(把你的訪問密鑰以便在.aws/config後):

aws s3 cp current_dump.csv.gz s3://yourbucket/20170108/dump.csv.gz 

然後定期的Postgres psql實用程序來執行在紅移COPY像這樣:

PGPASSWORD='YOURPASS' psql -h your.redshift.end.point.com -U youruser -d yourdb -p 5439 -c "COPY yourtable FROM 's3://yourbucket/20170108/dump.csv.gz' CREDENTIALS 'aws_access_key_id=[YOURKEY];aws_secret_access_key=[YOURSECRET]' DELIMITER ',' NULL 'NULL' IGNOREBLANKLINES EMPTYASNULL BLANKSASNULL TIMEFORMAT 'auto' FILLRECORD MAXERROR 1 CSV GZIP;" 

你可以把你的Postgres傾倒,並與時間值的位腳本一個shell腳本這些命令並運行它作爲一個cron作業。

對於最佳實踐,您希望upload to a staging table and then merge到您的主表以支持更新,如果需要並防止重複。

+0

謝謝@systemjack!我們一定會考慮這個工作流程。 – gignosko