为什么我的 Amazon Redshift 快照缺少一些表?

上次更新时间:2020 年 3 月 26 日

我从 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.    为缺少的表执行深层复制


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?