我想关闭我的Redshift群集,但希望保留它的备份。 我知道我可以创建一个手动快照,它将保存到S3。 为了进一步降低成本,我想将快照从S3移动到Glacier ,但无法在我的S3帐户中找到快照。
保存快照在哪里? AWS是否将其保存在其他帐户中?
或者我可能完全不正确,我应该以不同的方式备份我的Redshift群集吗?
谢谢你, 奥伦。
答案 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