0

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

目前的做法如下(手动):

  1. 将redshift查询结果卸载到s3
  2. 创建新的备份表
  3. 将文件从 s3 复制到红移表
  4. 从原始表中删除数据

我需要自动化这种方法,
使用 aws 数据管道是一种好方法吗?
请提出任何其他有效的方法,示例表示赞赏。

谢谢您的帮助!

4

2 回答 2

2

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

  1. 使用 redshift unload 命令,将要存档的数据复制到 s3,为每个存档使用一个子文件夹(例如,每月 - 使用年份和月份作为文件夹名称)
  2. 从您的红移表中删除数据。
  3. 在 s3 中为该数据设置红移光谱外部表定义,如果您愿意,可以将其设置为包括所有子文件夹。

我建议使用 gzip 格式并将每个文件的大小限制在 20-100mb 左右

这样,数据就在红移之外,但可以在需要时从红移访问。

于 2018-03-22T23:11:16.043 回答
1

我不知道这是否是亚马逊认为“常见”足以建议实践的情况,但这里有几个选项(注意:普遍的共识似乎是数据管道有利于简单的数据加载,但它并不打算作为存档方法。)

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

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

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

  4. 使用 AWS Glue(或者可能是 Data Pipelines,我没有使用过)提取表结构/数据,然后截断原始表。

  5. 使用外部 ETL 产品来执行与 Glue 相同的操作。有些是免费的,或者您的公司可能已经在使用其中一个。

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

于 2018-03-25T16:06:45.833 回答