From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Simon Riggs <simon(at)2ndquadrant(dot)com> |
Cc: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>, pgsql-hackers(at)postgreSQL(dot)org |
Subject: | Re: Why we really need timelines *now* in PITR |
Date: | 2004-07-21 22:42:50 |
Message-ID: | 22729.1090449770@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Simon Riggs <simon(at)2ndquadrant(dot)com> writes:
> More verbosely (not numbered because they're not a sequence or
> progression)
> - if no recovery.conf is present we do crash recovery to end of logs on
> pg_control timeline (i.e. current)
Check.
> - if recovery.conf is present and we do not specify a target we do
> archive recovery to end of logs on pg_control timeline (i.e. current)
I have done it this way for now, but I'm unconvinced whether this is the
best default --- it might be that we'd be better off making 'latest' be
the default. The point here is that when you restore a tar backup,
'current' is going to become the timeline that was current when the
backup was made, not the one that was current just before you wiped
$PGDATA. I'm not really sure which case is going to be more commonly
wanted.
> - if recovery.conf is present and we specify a target, but no timeline,
> then we do archive recovery on the pg_control timeline only, and assume
> that the target was supposed to be on this, even if we don't find it
Whether you specify a target stopping point does not matter AFAICS. The
timeline selection has to be made before we can even look at the data.
> - if recovery.conf is present and we specify a timeline of literally
> 'latest' (without having to know what that is) - then we search archive
> for the latest history file, then we do archive recovery from the
> pg_control timeline to the latest timeline as specified in the latest
> history file. If we specify a target, then this is searched for on
> whatever timeline we're on as we rollforward.
Check.
> - if recovery.conf is present and we specify a timeline - then we search
> archive for that history file, then we do archive recovery from the
> pg_control timeline to the specified timeline as shown in that history
> file. If we specify a target, then this is searched for on whatever
> timeline we're on as we rollforward.
Check.
>>> I don't like the name target_in_timeline,
>>
>> Agreed, but I don't have a better name offhand for it.
For lack of any better idea, I have swallowed my objections to "target"
and called it "recovery_target_timeline". We can easily rename the
parameter if anyone comes up with something more compelling.
Above behavior is all committed to CVS as of a few minutes ago.
> Another thing I note is that archive_status .ready messages are written
> for all restored xlog files (rather than .done messages).
I think this is gone now. However, we still have the issue of preventing
re-archival of old, incomplete XLOG segments that might be brought back
into pg_xlog/ as a result of restoring a tar backup. I don't have a
better solution to that than the one Bruce and I proposed yesterday
(make the DBA clean out pg_xlog before starting a recovery run).
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2004-07-21 22:43:55 | Re: PITR COPY Failure (was Point in Time Recovery) |
Previous Message | Oliver Jowett | 2004-07-21 21:20:55 | Re: V3 protocol + DECLARE problems |