我们在Redshift中有一组表,其中包含IDENTITY属性的列,用于生成序列。在测试阶段,需要进行备份和恢复,这是每个测试周期的重复活动。我们按照以下流程进行备份然后恢复并面临以下问题:
如果您可以在我的方案或组织遵循的最佳实践中建议最佳的备份和还原方式,将会非常有用。
答案 0 :(得分:3)
我想在这里逐点回答,这会有点长,请原谅;),但我认为,最好的选择是Unload to S3
和Copy to table from S3
。在这里,S3可以替换为EC2
。
这里列出了一些问题,但是大多数问题都是错误的,或者可以通过提供适当的导出/导入参数来避免。我想提供所有必要步骤的数据,以证明我的观点:在加载和卸载期间dates
和timestamps
中没有问题。
在这里,我正在使用大多数数据类型来证明我的观点。
create table sales(
salesid integer not null Identity,
commission decimal(8,2),
saledate date,
description varchar(255),
created_at timestamp default sysdate,
updated_at timestamp);
CSV(sales-example.txt)中的内容
salesid,commission,saledate,description,created_at,updated_at
1|3.55|2018-12-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
2|6.55|2018-01-01|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
4|7.55|2018-02-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
5|3.55||Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
7|3.50|2018-10-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
将导入date
,timestamps
以及ID的复制命令。
copy sales(salesid,commission,saledate,description,created_at,updated_at) from 's3://****/de***/sales-example.txt' credentials 'aws_access_key_id=************;aws_secret_access_key=***********' IGNOREHEADER 1 EXPLICIT_IDS;
这将复制5条记录。我正在这里parallel off
进行操作,以获取单个CSV
中的数据以证明要点,尽管这不是必需的,应避免。
unload ('select salesid,commission,saledate,description,created_at,updated_at from sales') to 's3://assortdw/development/sales-example-2.txt' credentials 'aws_access_key_id=***********;aws_secret_access_key=***********' parallel off;
下面又是我的内容,它与导入内容完全相同,这意味着如果将Copy
命令运行到dev
或QA
或任何其他环境中,我将得到与Redshift
群集中的记录完全相同。
5|3.55||Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
1|3.55|2018-12-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
7|3.50|2018-10-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
2|6.55|2018-01-01|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
4|7.55|2018-02-10|Test description|2018-05-17 23:54:51|2018-05-17 23:54:51
我希望这能回答问题,并为discuss/summarize/conclude
提供一个起点。欢迎大家加分。