2016-12-29 8 views
0

Redshiftを使用して倉庫を探しており、既存のオンプレミスのPostgres DBから夜間にRedshiftに新しいデータを移動する必要があります。プライマリdbがRDSの場合はPipelineとテンプレートでこれを行うことができますが、データベースがオンプレミスの場合はPipelineで行うことができますか?AWS Pipelineを使用してオンプレスポストグルをRedshiftにインクリメンタルコピーする

+0

これを行うことはできますが、パイプラインはその目的のために作られていません。 –

答えて

0

定期的に一括して同期をとっているので、データをS3にプッシュすることを検討してください(オンプレミスから簡単に実行してから、COPYコマンドを使用して赤方偏移にロードすることを検討してください)。高速で信頼性が高く、副作用としてs3で無料(安価)のバックアップを取得します。定期的にpostgresのに続い

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

て実行するpsqlユーティリティを:あなたが好きなもので(.aws/configであなたのアクセスキーを入れた後で)あなたのCSVのpostgresのダンプを押し上げるawscliのpythonツールからaws s3 cpを使用することができます

そのような赤方偏移の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のダンプと、これらのコマンドを入れて、cronジョブとして、それを実行することができます。

ベストプラクティスのために、必要に応じて更新をサポートし、重複を防止するためにupload to a staging table and then mergeをメインテーブルに追加します。

+0

Thanks @systemjack!間違いなくこのワークフローを検討します。 – gignosko

関連する問題