乘法行更新后的postgresql数据恢复

时间:2014-06-19 10:30:06

标签: postgresql data-recovery

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

查询如下:
更新表集column1 = 21其中column2> column3(错过了1个条件,因此更新了更多行)

下面显示的1个更新记录的示例。它从1个更新行和5个插入行开始。 我想知道有没有办法找到用21代替的号码?

1)第一行(更新)rel 1663/5880305/5880686显示了我正在寻找的表(5880305 oid of db和5880686 oid of the table) 此外,我有旧的备份和行与元组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

1 个答案:

答案 0 :(得分:0)

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