2017-08-17 57 views
0

假設情況 - 我有一個10節點的Greenplum集羣,其中1000個表中的數據爲100 TB,出於某些原因需要將其卸載到S3。理想情況下,最終結果是與數據庫中的每個表對應的.csv文件。將Greenplum數據庫導出到Amazon S3作爲.csv

我有三種可能的方法,每種都有正面和負面。

COPY-有一個問題已經回答了分佈式架構中psql COPY的問題,但這一切都必須經過主站,爲100TB數據的移動創造了一個瓶頸。

gpcrondump - 這將爲每個表創建10個文件,格式爲TAB分隔符,這需要一些post-gpcrondump ETL將這些文件合併爲一個.csv文件,但它充分利用了分佈式體系結構並自動記錄日誌成功/失敗的轉移。 EWT - 利用分佈式體系結構並將每個表寫入單個文件,而不必將其保存在本地內存中,直到完整文件生成爲止,但可能是寫入的最複雜的腳本,因爲您需要實施ETL,你不能單獨做,在轉儲後。

當我們在數據庫中移動並找出哪些表失敗時,所有選項都會與表鎖發生不同的問題,因此我們可以重新解決它們以實現完整的數據傳輸。

您會使用哪種方法,爲什麼?

+0

你不想使用gpcrondump - 你最終不僅持有COPY格式的數據文件,而且還與需要恢復的備份額外的SQL語句。 –

回答