如何将Redshift快照从S3移动到Glacier?

时间:2017-02-01 17:34:12

标签: amazon-web-services amazon-s3 amazon-redshift amazon-glacier

我想关闭我的Redshift群集,但希望保留它的备份。 我知道我可以创建一个手动快照,它将保存到S3。 为了进一步降低成本,我想将快照从S3移动到Glacier ,但无法在我的S3帐户中找到快照。

保存快照在哪里? AWS是否将其保存在其他帐户中?

或者我可能完全不正确,我应该以不同的方式备份我的Redshift群集吗?

谢谢你, 奥伦。

2 个答案:

答案 0 :(得分:6)

它未存储在您帐户的任何S3存储桶中。它被存储在幕后"在S3。亚马逊只是告诉您它存储在S3中,因此您了解快照存储中涉及的容错能力。如果需要在一个S3存储桶中存储备份,则需要执行数据库的pg_dump并将转储文件复制到S3。

答案 1 :(得分:1)

您可以使用Redshift的UNLOAD将表直接转储到S3存储桶。不幸的是,您需要为每个表单独执行此操作。您还希望为您的表归档所有架构查询CREATE等(pg_dump解决方案没有此问题,因为它可以捕获表定义,但需要本地存储文件和手动推送到S3 ......虽然对于像存档和完全关闭这样的情况可能是值得的。

UNLOAD('select * from your_table') TO 's3://your_bucket/your_table.csv' 
WITH CREDENTIALS 'aws_access_key_id=YOUR_KEY;aws_secret_access_key=YOUR_SECRET' 
DELIMITER ',' NULL 'null' ALLOWOVERWRITE;

在S3存储桶中拥有所有表后,您可以设置生命周期(在“生命周期”面板上的存储桶的“属性”窗格中创建的规则)以存档到冰川存储类。

这有点令人困惑,因为Glacier是它自己的服务,但是当你通过生命周期归档时,文件会保留在S3存储桶中。您可以通过在S3控制台中选择文件,选择properties窗格并打开Details面板来告诉他们他们在冰川中。应该说Storage class: Glacier

如果您需要恢复,则使用COPY命令:

COPY your_table FROM 's3://your_bucket/your_table.csv'
CREDENTIALS 'aws_access_key_id=[YOURKEY];aws_secret_access_key=[YOURSECRET]'
DELIMITER ',' NULL 'null' IGNOREBLANKLINES EMPTYASNULL
BLANKSASNULL TIMEFORMAT 'auto' FILLRECORD MAXERROR 1