我从 Amazon Redshift 集群恢复了一个快照,但该快照缺少一些表。如何备份缺少的表?
简短描述
如果创建表时将其指定为无备份表,则 Amazon Redshift 快照中不会包含这些表。验证是否由于创建表时使用了 BACKUP NO 参数而导致 Amazon Redshift 排除了您的表。然后,执行深层复制。
解决方法
要从 Amazon Redshift 快照备份缺少的表,请执行以下步骤:
1. 查看快照中缺少的表的数据定义语言 (DDL)。
2. 如果表的 DDL 不可用,请以超级用户身份运行以下查询:
SELECT DISTINCT Rtrim(n.nspname) AS schema_name,
Rtrim(name) AS table_name,
backup
FROM stv_tbl_perm t
join pg_class c
ON t.id = c.oid
join pg_namespace n
ON n.oid = c.relnamespace
ORDER BY 1,2;
上述查询可识别已连接的数据库中未在快照中备份的表。它查询 STV_TBL_PERM,这是仅对超级用户账户可见的系统表。有关超级用户专属视图的更多信息,请参阅系统表及视图中的数据可见性。
**注意:**备份列的值为 0 表示创建表时使用了 BACKUP NO 参数。您无法将 Amazon Redshift 中现有的表改为使用 BACKUP YES 参数。
3. 如果您的表已创建为无备份表,则不使用 BACKUP NO 参数重新创建表。
4. 为缺少的表执行深层复制。
相关信息
CREATE TABLE AS 参数
Amazon Redshift 快照