【问题标题】:postgresql data recovery after multiply rows update多行更新后的postgresql数据恢复
【发布时间】:2014-08-09 20:41:13
【问题描述】:

我正在尝试使用 xlog 和 pg_xlogdump 工具检索因错误更新查询而丢失的数据。

查询如下:
update table set column1 =21 where column2 > column3 (错过了 1 个条件,因此更新了更多行)

如下所示的 1 条更新记录的示例。它以 1 个更新行和 5 个插入行开始。 我想知道有什么方法可以找到替换为 21 的数字吗?

1) 第一行 (更新) rel 1663/5880305/5880686 准确地显示了我正在寻找的表(数据库的 5880305 oid 和表的 5880686 oid) 另外,我有旧的备份和带有元组 47275/8 的行,有更新的同一行,更新版本中有新的元组(新 tid:293804/16)

2) 第 4 行显示 column1 更新(11996103 是该列的 oid),但我不知道 如何找到元组 302/164 以及如何找回丢失的号码

提前致谢。

rmgr: Heap        len (rec/tot):    163/  8391, tx:  692554090, lsn: 115/73F1D288, prev 115/73F1D240, bkp: 1000, desc: update: rel 1663/5880305/5880686; tid 47275/8 xmax 692554090 ; new tid 293804/16 xmax 0
backup bkp #0; rel 1663/5880305/5880686; fork: main; block: 47275; hole: offset: 228, length: 20

rmgr: Btree       len (rec/tot):     34/    66, tx:  692554090, lsn: 115/73F1F368, prev 115/73F1D288, bkp: 0000, desc: insert: rel 1663/5880305/11995979; tid 6587/293

rmgr: Btree       len (rec/tot):     34/    66, tx:  692554090, lsn: 115/73F1F3B0, prev 115/73F1F368, bkp: 0000, desc: insert: rel 1663/5880305/11996093; tid 6587/292

rmgr: Btree       len (rec/tot):     34/    66, tx:  692554090, lsn: 115/73F1F3F8, prev 115/73F1F3B0, bkp: 0000, desc: insert: rel 1663/5880305/11996103; tid 302/164

rmgr: Btree       len (rec/tot):     34/    66, tx:  692554090, lsn: 115/73F1F440, prev 115/73F1F3F8, bkp: 0000, desc: insert: rel 1663/5880305/11996135; tid 43502/2

rmgr: Btree       len (rec/tot):     34/    66, tx:  692554090, lsn: 115/73F1F488, prev 115/73F1F440, bkp: 0000, desc: insert: rel 1663/5880305/11996136; tid 1/2

【问题讨论】:

  • 在做任何其他事情之前,请遵循此处的建议:wiki.postgresql.org/wiki/Corruption
  • 然后查看pg_dirtyread,是的,pg_xlogdump。如果你幸运的话,你有一个很高的wal_level,并且在 xlogs 中有一个完整的页面写入图像。
  • 您正在归档日志文件吗?

标签: postgresql data-recovery


【解决方案1】:

如果您归档了日志文件,那么只需使用 point in time recovery 否则很复杂

【讨论】:

    猜你喜欢
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多