Обсуждение: postgresql history and timelines

Поиск
Список
Период
Сортировка

postgresql history and timelines

От
Mariel Cherkassky
Дата:
Hi guys,
Wanted to understand something that isnt clear to me, please correct me if I'm wrong :

-When we want to recover our database or promote a secondary to be a master a new time line will be created. A new file will be created in the pg_xlog directory named '00000TIMELINEID.history'.
-During the daily work, the primary or the secondary shouldnt have a .history file right ?
-The history file contains only the timeline id and the location to start from the timeline.
-When using repmgr, after cloning the primary and starting the secondary the secondary should replay wals from :
1.archives
2.local wals
3.Streaming replication from primary  
?

I cloned the primary to the secondary, and when I tried to start the secondary I got the next message : 
 LOG:  restored log file "000000010000090A00000002" from archive
FATAL:  requested timeline 2 is not a child of this server's history
 DETAIL:  Latest checkpoint is at xx on timeline 1, but in the history of the requested timeline, the server forked off from that timeline at YY.

So I didnt recover my primary or promoted a secondary so how is it possible that I have a file from timeline 2 ? Are there other operations that creates a new timeline ?


Thanks.

Re: postgresql history and timelines

От
Achilleas Mantzios
Дата:
On 18/11/18 11:29 π.μ., Mariel Cherkassky wrote:
> Hi guys,
> Wanted to understand something that isnt clear to me, please correct 
> me if I'm wrong :
>
> -When we want to recover our database or promote a secondary to be a 
> master a new time line will be created. A new file will be created in 
> the pg_xlog directory named '00000TIMELINEID.history'.
> -During the daily work, the primary or the secondary shouldnt have a 
> .history file right ?
> -The history file contains only the timeline id and the location to 
> start from the timeline.
> -When using repmgr, after cloning the primary and starting the 
> secondary the secondary should replay wals from :
> 1.archives
> 2.local wals
> 3.Streaming replication from primary
> ?


Streaming and if not available from the archives. Careful with the 
archives. Local wals are a result of receiving them via restore, they 
are not a source to replay from.


>
> I cloned the primary to the secondary, and when I tried to start the 
> secondary I got the next message :
>  LOG:  restored log file "000000010000090A00000002" from archive
> FATAL:  requested timeline 2 is not a child of this server's history
>  DETAIL:  Latest checkpoint is at xx on timeline 1, but in the history 
> of the requested timeline, the server forked off from that timeline at YY.
>

Cloning must be done withing a start / stop backup or done with 
pg_basebackup.

After the cloning, you must first create recovery.conf, set it up 
correctly and then start the standby, pg_basebackup does this for you.

What the message says to you is that smth messed up with the timelines, 
wrong/old backup, garbage files in pg_xlog, etc.


> So I didnt recover my primary or promoted a secondary so how is it 
> possible that I have a file from timeline 2 ? Are there other 
> operations that creates a new timeline ?
>

Can you describe the precise sequence of steps that you took?


>
> Thanks.