我对postgres表做了一些更改,我想将其恢复到以前的状态。没有备份数据库。有办法吗?如果,postgres会自动拍摄并将其存储在某处,或者原始数据会永远丢失吗?
答案 0 :(得分:6)
默认情况下,PostgreSQL不会存储所有旧数据 - 当然,这会让很多人感到惊讶。但是,它有一个内置的Point-in-time Recovery机制,可以完全按照您的要求进行操作。您必须保留“预写日志文件”的存档,该存档表示对数据库所做的更改,您可以定期进行基本备份。当您想恢复时,您可以恢复到特定时间甚至特定交易ID。
答案 1 :(得分:4)
如果您没有备份,并对数据进行了操作,我认为您无法做很多事情:数据库现在有您的新数据,旧版本已被替换/删除
数据库引擎的目标是保存您存储在其中的数据 - 而不是您从中删除的数据。
下一次:如果你需要尝试一些事情,请使用一个事务,并且在你确定你做了什么之前不要提交它 - 好吧,请注意不要在commitint或rollback之前等待太久,因为它可能会锁定某些内容,阻止其他人查询。