自动归档 aws-redshift 表的最佳方法

问题描述 投票:0回答:3

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

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

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

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

感谢您的帮助!

amazon-web-services amazon-s3 amazon-redshift amazon-data-pipeline data-pipeline
3个回答
2
投票

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

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

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

这样数据就位于 Redshift 之外,但可以在需要时从 Redshift 访问。


1
投票

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

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

  2. 将数据复制到 S3 中的外部表,然后从 Redshift 表中删除。我认为你可以使用 Spectrum 来实现这一点。

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

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

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

我没有遇到任何有关此类数据复制的最佳实践。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.