关于Amazon Web Services:自动归档AWS-Redshift表的最佳方法

Best approach to automate archiving aws-redshift table

我在redshift中有一张大桌子,我需要自动化归档每月数据的过程。

当前方法如下(手动):

  • 将redshift查询结果卸载到s3
  • 创建新的备份表
  • 将文件从s3复制到redshift表
  • 从原始表中删除数据
  • 我需要使这种方法自动化,
    使用AWS数据管道是一种好方法吗?
    请提出任何其他有效的方法,示例值得赞赏。

    感谢您的帮助!


    我不知道这是否是亚马逊认为"通用"足以建议实践的情况,但是这里有几种选择(注意:流行的共识似乎是数据管道适合简单数据加载,但是它不用作存档方法。)

  • 每个月创建一个快照,然后从该表中删除数据。您可以使用快照API操作或可以自动执行的控制台调度,并且快照中将带有日期戳。

  • 将数据复制到S3中的外部表,然后从Redshift表中删除。我认为您可以为此使用Spectrum。

  • 使用第三方备份解决方案,例如N2WS,Panopoly。

  • 使用AWS Glue(或者也许我没有使用过Data Pipelines)提取表结构/数据,然后截断原始表。

  • 使用外部ETL产品执行与Glue相同的操作。有些是免费的,或者您的公司可能已经使用过。

  • 关于这种类型的数据复制,我没有遇到任何最佳实践。


    我建议的方法是在较小的实例中设置气流以运行调度。或者,如果工作量太大,请设置crontab。

  • 使用redshift unload命令,将要归档的数据复制到s3,使用一个子文件夹
    每个存档(例如,每月-使用年份和月份作为文件夹
    名称)
  • 从redshift表中删除数据。
  • 为该数据设置一个红移频谱外部表定义
    在s3中,您可以将其设置为包括所有子文件夹
    希望。
  • 我建议使用gzip格式,并将每个文件的大小限制为20-100mb

    这样,数据在redshift之外,但是可以在需要时从redshift进行访问。