【问题标题】:Amazon RDS Postgresql snapshot preserves schema but loses all dataAmazon RDS Postgresql 快照保留架构但丢失所有数据
【发布时间】:2020-06-05 09:45:15
【问题描述】:

使用 AWS RDS 控制台,我创建了一个包含多个架构的 Postgresql v11 数据库的快照备份。然后我从备份中创建了一个新实例。该过程似乎运行良好,没有错误。但是,在检查新实例中的数据后,我注意到只有一个模式中的数据没有被保留。架构结构、表、索引、约束等看起来不错,但每个表都是空的(对于架构中的每个表,从 schema.table 中选择计数(*)为 0)。所有其他模式看起来都很好并且包含预期的数据。我到处寻找(无法在网上找到帮助)并自己尝试了许多测试(改变角色、重建架构、特权等等),同时试图解决这个问题。什么会导致我的快照保留整个架构结构,但会丢失所有数据本身?

【问题讨论】:

  • 如果你把它变成一个带有(自写)答案的问题,我会投赞成票。
  • 欢迎来到stackexchange,你问了一个好问题,甚至找到了答案。这里的礼仪要求将答案放入答案部分,以便您可以获得适当的奖励。并帮助其他人看到这个问题有答案。只需将您的最后一段剪切并粘贴到底部的框中​​,然后单击Post Your Answer
  • 感谢您的反馈。我已将我最初的帖子改写为一个问题,并附上了一个自写的答案。

标签: postgresql amazon-web-services relational-database missing-data snapshot


【解决方案1】:

我终于意识到问题模式与另一个模式之间的唯一区别是问题模式中的所有表都是使用“UNLOGGED”关键字创建的。这样做是为了提高首次构建模式时插入的数百万行的写入速度。但是,当如上所述创建/恢复快照时,该过程依赖于使用普通(记录)表写入的 WAL 文件来恢复数据。为了解决我的问题,我只是更改了所有表并将它们设置为记录(alter table schema.table set logged)。在此之后,快照工作正常。对于将来做类似事情的任何其他人,如果初始大量数据需要未记录的表以获得更好的写入速度,最好在初始数据填充后将它们更改为记录(如果您打算使用快照或复制或类似)。旁注,pg_dump/pg_restore 仍然适用于未记录的表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 2011-03-01
    • 2018-10-10
    • 1970-01-01
    • 2014-08-08
    • 2021-02-14
    • 1970-01-01
    相关资源
    最近更新 更多