Thread: PITR - recovery to a particular transaction

PITR - recovery to a particular transaction

From
Oliver Elphick
Date:
The PITR docs that have just been put up say:
       But if you want to recover to some previous point in time (say,       right before the junior DBA dropped your
maintransaction       table), just specify the required stopping point in       recovery.conf. You can specify the stop
pointeither by       date/time or by transaction ID. As of this writing only the       date/time option is very usable,
sincethere are no tools to       help you identify which transaction ID to use.
 

How about adding a logging option to put the transaction id on the log
for every statement that modifies the database?  Would that be a small
enough change to be allowed into 8.0?
-- 
Oliver Elphick                                          olly@lfix.co.uk
Isle of Wight                              http://www.lfix.co.uk/oliver
GPG: 1024D/A54310EA  92C8 39E7 280E 3631 3F0E  1EC0 5664 7A2F A543 10EA
========================================   "And not only so, but we glory in tribulations also;      knowing that
tribulationworketh patience; And       patience, experience; and experience, hope."
           Romans 5:3,4 
 



Re: PITR - recovery to a particular transaction

From
G u i d o B a r o s i o
Date:
8.0 || 7.5??

g:)

> The PITR docs that have just been put up say:
> 
>         But if you want to recover to some previous point in time (say,
>         right before the junior DBA dropped your main transaction
>         table), just specify the required stopping point in
>         recovery.conf. You can specify the stop point either by
>         date/time or by transaction ID. As of this writing only the
>         date/time option is very usable, since there are no tools to
>         help you identify which transaction ID to use.
> 
> How about adding a logging option to put the transaction id on the log
> for every statement that modifies the database?  Would that be a small
> enough change to be allowed into 8.0?
> -- 
> Oliver Elphick                                          olly@lfix.co.uk
> Isle of Wight                              http://www.lfix.co.uk/oliver
> GPG: 1024D/A54310EA  92C8 39E7 280E 3631 3F0E  1EC0 5664 7A2F A543 10EA
>                  ========================================
>      "And not only so, but we glory in tribulations also; 
>       knowing that tribulation worketh patience; And  
>       patience, experience; and experience, hope."          
>                                         Romans 5:3,4 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
> 
>                http://archives.postgresql.org



Re: PITR - recovery to a particular transaction

From
Tom Lane
Date:
Oliver Elphick <olly@lfix.co.uk> writes:
> How about adding a logging option to put the transaction id on the log
> for every statement that modifies the database?  Would that be a small
> enough change to be allowed into 8.0?

I think we could get away with adding transaction ID as one of the
available %-items in log_line_prefix.  I'm not sure how useful this
really is though --- timestamps are probably more useful overall to
have in your log.  The direction I was expecting we'd head in is to
provide WAL logfile examination tools.
        regards, tom lane


Re: PITR - recovery to a particular transaction

From
Oliver Elphick
Date:
On Wed, 2004-08-04 at 19:16, Tom Lane wrote:
> Oliver Elphick <olly@lfix.co.uk> writes:
> > How about adding a logging option to put the transaction id on the log
> > for every statement that modifies the database?  Would that be a small
> > enough change to be allowed into 8.0?
> 
> I think we could get away with adding transaction ID as one of the
> available %-items in log_line_prefix.  I'm not sure how useful this
> really is though --- timestamps are probably more useful overall to
> have in your log.

Why not both?

You seem to be suggesting that using the id is less useful than the
time, but surely it's going to be easier to say "this disaster happened
in transaction 123 so lets do a PITR up to 122" than to say "this
happened at time x so do PITR up to x - 1 second"; the latter might miss
several tranactions.  Have I got the concepts wrong here?

>   The direction I was expecting we'd head in is to
> provide WAL logfile examination tools.

But that's not going to happen for 8.0, so any means of getting the
transaction id is better than none.

-- 
Oliver Elphick                                          olly@lfix.co.uk
Isle of Wight                              http://www.lfix.co.uk/oliver
GPG: 1024D/A54310EA  92C8 39E7 280E 3631 3F0E  1EC0 5664 7A2F A543 10EA
========================================   "And not only so, but we glory in tribulations also;      knowing that
tribulationworketh patience; And       patience, experience; and experience, hope."
           Romans 5:3,4 
 



Re: PITR - recovery to a particular transaction

From
Rod Taylor
Date:
> You seem to be suggesting that using the id is less useful than the
> time, but surely it's going to be easier to say "this disaster happened
> in transaction 123 so lets do a PITR up to 122" than to say "this

Transaction IDs are assigned at transaction start but what you really
want is some indicator of when the commit occurred.

Transaction 123 may have committed while 122 was still running.




Re: PITR - recovery to a particular transaction

From
Bruce Momjian
Date:
Rod Taylor wrote:
> > You seem to be suggesting that using the id is less useful than the
> > time, but surely it's going to be easier to say "this disaster happened
> > in transaction 123 so lets do a PITR up to 122" than to say "this
> 
> Transaction IDs are assigned at transaction start but what you really
> want is some indicator of when the commit occurred.
> 
> Transaction 123 may have committed while 122 was still running.

True.  In fact this brings up a problem of using the xid for recovery
stop.  The interesting point is that you might recover to just before
xact 123, but that doesn't mean you get xact 122.

Still I think we need to add xid to the log_line_prefix for PITR and
make it clear that specifying a recovery xid doesn't always include
earlier xids.  I have added this to the open items list.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: PITR - recovery to a particular transaction

From
Gaetano Mendola
Date:
G u i d o B a r o s i o wrote:

> 8.0 || 7.5??

8.0


Regards
Gaetano Mendola




Re: PITR - recovery to a particular transaction

From
Bruce Momjian
Date:
When we do a PITR recovery based on xid, does it stop recovery based on
the start of the xid or the commit of the xid?  And if you say
recovery_target_inclusive =true, does it recover that xid while not
recoverying other xids that are higher but committed sooner than the
target xid?

---------------------------------------------------------------------------

Oliver Elphick wrote:
> On Wed, 2004-08-04 at 19:16, Tom Lane wrote:
> > Oliver Elphick <olly@lfix.co.uk> writes:
> > > How about adding a logging option to put the transaction id on the log
> > > for every statement that modifies the database?  Would that be a small
> > > enough change to be allowed into 8.0?
> > 
> > I think we could get away with adding transaction ID as one of the
> > available %-items in log_line_prefix.  I'm not sure how useful this
> > really is though --- timestamps are probably more useful overall to
> > have in your log.
> 
> Why not both?
> 
> You seem to be suggesting that using the id is less useful than the
> time, but surely it's going to be easier to say "this disaster happened
> in transaction 123 so lets do a PITR up to 122" than to say "this
> happened at time x so do PITR up to x - 1 second"; the latter might miss
> several tranactions.  Have I got the concepts wrong here?
> 
> >   The direction I was expecting we'd head in is to
> > provide WAL logfile examination tools.
> 
> But that's not going to happen for 8.0, so any means of getting the
> transaction id is better than none.
> 
> -- 
> Oliver Elphick                                          olly@lfix.co.uk
> Isle of Wight                              http://www.lfix.co.uk/oliver
> GPG: 1024D/A54310EA  92C8 39E7 280E 3631 3F0E  1EC0 5664 7A2F A543 10EA
>                  ========================================
>      "And not only so, but we glory in tribulations also; 
>       knowing that tribulation worketh patience; And  
>       patience, experience; and experience, hope."          
>                                         Romans 5:3,4 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: PITR - recovery to a particular transaction

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> When we do a PITR recovery based on xid, does it stop recovery based on
> the start of the xid or the commit of the xid?

You can stop either "before" or "after" that commit.  See
recovery.conf.sample (I don't think it's documented anywhere else
yet :-(),
        regards, tom lane


Re: PITR - recovery to a particular transaction

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > When we do a PITR recovery based on xid, does it stop recovery based on
> > the start of the xid or the commit of the xid?
> 
> You can stop either "before" or "after" that commit.  See
> recovery.conf.sample (I don't think it's documented anywhere else
> yet :-(),

Yea, my question is if you choose "after", do you get everything that
happens until the "after" transaction commits, or just when it begins. 
If I stop after xid 125, and xid 126 starts and stops before 125
commits, does 126 get restored?

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: PITR - recovery to a particular transaction

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Yea, my question is if you choose "after", do you get everything that
> happens until the "after" transaction commits, or just when it begins. 
> If I stop after xid 125, and xid 126 starts and stops before 125
> commits, does 126 get restored?

Yes.  You don't get to be selective about what to keep: it's everything
up to a certain time instant, and nothing after that.  Stopping by XID
is just a different way of identifying what that time instant is.

BTW, stopping "before" an XID actually means stopping just before its
commit or abort record, so transactions that ended before it did will
be included in the recovery.
        regards, tom lane


Re: PITR - recovery to a particular transaction

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Yea, my question is if you choose "after", do you get everything that
> > happens until the "after" transaction commits, or just when it begins. 
> > If I stop after xid 125, and xid 126 starts and stops before 125
> > commits, does 126 get restored?
> 
> Yes.  You don't get to be selective about what to keep: it's everything
> up to a certain time instant, and nothing after that.  Stopping by XID
> is just a different way of identifying what that time instant is.
> 
> BTW, stopping "before" an XID actually means stopping just before its
> commit or abort record, so transactions that ended before it did will
> be included in the recovery.

OK, I added a mention of this in the docs.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073