2017-08-17 61 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语句。 –

回答