将表从一个红移群集复制到另一个红移群集(不使用s3)

Pra*_*ash 11 amazon-redshift

我们可以直接将表从一个红移群集复制到另一个红移群集吗?

我知道可以使用s3作为临时存储来实现表复制(即从第一个集群卸载到s3然后从s3复制到另一个集群).

Pra*_*ash 27

所以答案是否定的.以下是我从AWS Support获得的回复.

您好,非常感谢您与AWS Support联系.使用Amazon RedShift,我们没有一种机制可以将数据从RedShift集群中的表直接复制到另一个RedShift集群中的另一个表.实现类似结果的正常程序是:

(1)卸载到S3,然后从S3复制

使用此方法,您可以使用S3作为中间存储.首先,将源数据集中的数据卸载到S3,然后从目标集群上的S3复制数据.这是您熟悉的方法,也是我们推荐的方法.RedShift旨在与S3配合使用,并且可以以相对较低的成本实现高效率.有关RedShift中UNLOADD和COPY操作的更多信息,请参阅以下AWS文档:

http://docs.aws.amazon.com/redshift/latest/dg/t_Unloading_tables.html http://docs.aws.amazon.com/redshift/latest/dg/t_loading-tables-from-s3.html

(2)使用群集快照

另一种方法是创建源群集的快照,然后将快照还原为目标群集.之后,从目标群集中删除不必要的表.问题是,如果您只需要目标集群上的一小部分数据(例如,十个表中的一个),那么您可能正在为(相对)小型应用程序使用(相对)大型集群.

有关管理RedShift群集快照的更多信息,请参阅以下AWS文档:

http://docs.aws.amazon.com/redshift/latest/mgmt/managing-snapshots-console.html

总之,我们更喜欢UNLOAD和COPY流程,这是一个非常直接且具有成本效益的流程.

  • 表只能在同一个集群中恢复. (4认同)
  • 确保测试您的复制/卸载脚本。例如,默认情况下不会转义分隔符,您可能会收到诸如在文件中找到额外列之类的错误。我们现在将“addquotes escape”包含到我们的卸载命令中(以及相关副本的“removequotes escape”)。另外,为了在空模式中为复制命令构建 ddl,请查看 amazons github redshift utility 中的“admin.v_generate_tbl_ddl” (2认同)