Re: [HACKERS] Reading timeline from pg_control on replication slave

Поиск
Список
Период
Сортировка
От Andrey Borodin
Тема Re: [HACKERS] Reading timeline from pg_control on replication slave
Дата
Msg-id F468EAFB-55B8-48D1-8006-1755786D3EDC@yandex-team.ru
обсуждение исходный текст
Ответ на Re: [HACKERS] Reading timeline from pg_control on replication slave  (Michael Paquier <michael.paquier@gmail.com>)
Список pgsql-hackers
Hi, Michael!

Thank you very much for these comments!

> 28 окт. 2017 г., в 3:09, Michael Paquier <michael.paquier@gmail.com> написал(а):
>
> ThisTimeLineID is not something you can rely on for standby backends
> as it is not set during recovery. That's the reason behind
> pg_walfile_name disabled during recovery. There are three things
> popping on top of my mind that one could think about:
> 1) Backups cannot be completed when started on a standby in recovery
> and when stopped after the standby has been promoted, meaning that its
> timeline has changed.
> 2) After a standby has been promoted, by using pg_start_backup, you
> issue a checkpoint which makes sure that the control file gets flushed
> with the new information, so when pg_start_backup returns to the
> caller you should have the correct timeline number because the outer
> function gets evaluated last.
> 3) Backups taken from cascading standbys, where a direct parent has
> been promoted.
>
> 1) and 2) are actually not problems per the restrictions I am giving
> above, but 3) is. If I recall correctly, when a streaming standby does
> a timeline jump, a restart point is not immediately generated, so you
> could have the timeline on the control file not updated to the latest
> timeline value, meaning that you could have the WAL file name you use
> here referring to a previous timeline and not the newest one.
>
> In short, yes, what you are doing is definitely risky in my opinion,
> particularly for complex cascading setups.

We are using TimeLineId from pg_control only to give a name to backup. Slightly stale timeline Id will not incur
significantproblems as long as pg_control is picked up after backup finalization. 

But from your words I see that the safest option is to check timeline from pg_control after start and after stop. If
thistimelines differ - invalidate backup entirely. This does not seem too hard condition for invalidation, does it? 

Best regards, Andrey Borodin.

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: [HACKERS] Adding table_constraint description in ALTER TABLE synopsis
Следующее
От: Robert Haas
Дата:
Сообщение: Re: [HACKERS] Partition-wise aggregation/grouping