Re: Why we really need timelines *now* in PITR - Mailing list pgsql-hackers
| From | Tom Lane |
|---|---|
| Subject | Re: Why we really need timelines *now* in PITR |
| Date | |
| Msg-id | 22729.1090449770@sss.pgh.pa.us Whole thread Raw |
| In response to | Re: Why we really need timelines *now* in PITR (Simon Riggs <simon@2ndquadrant.com>) |
| Responses |
Re: Why we really need timelines *now* in PITR
|
| List | pgsql-hackers |
Simon Riggs <simon@2ndquadrant.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
pgsql-hackers by date: