I read the document about recovery configuration, it says:
recovery_target_timeline (string)
...
Other than that you only need to set this parameter in complex re-
recovery situations, where you need to return to a state that itself
was reached after a point-in-time recovery. See Section 25.3.5 for
discussion.
...
Andin section 25.3.5 it says:
...
If you wish to recover into some child timeline (that is, you want
to return to some state that was itself generated after a recovery
attempt), you need to specify the target timeline ID in
recovery.conf.
...
Therefore, suppose I am going to recover to a point of some child
timeline, to identify the point, I have to specify either
recovery_target_name or recovery_target_time, and also specify the
recovery_target_timeline.
It is more like a tuple like (recovery_target_time,
recovery_target_timeline), that specify a real point among all history
branches. Am I understand this correctly?
If yes, what I want to ask is that, though the timeline is increasing
between different recovery, but each timestamp corresponds to a
timeline ID, one by one. So if I get a recovery_target_time, why should
I still specify the recovery_target_timeline?
Suppose following illustration:
A B
BASE-----+-----+------o1 (recover to A) 1
| | C
+.....|.......----+---o2 (regret, recover to B) 2
| |
+...........|..------o3 (regret again, recover to C) 3
|
+........---- 4
Legend:
BASE: basebackup
A-Z: recovery point
---: active wal histroy (continuous among branches)
...: inactive wal history
oN: point to do PITR
If am at "o3", and I want to recover to "C", if I don't specify
timeline ID, then i will ends up with state as "o1". Only if I specify
timeline ID as "2", then I can get the state as I expect (as
illustrated).
Why not just recover along the history from timeline 1 to the timeline
specified by recovery target? The only reason I can imagine is that
there is a chance that there are two active timeline at same point, but
what is the use case of that(if it exists)?