Обсуждение: Question about timelines
Hi,
we have a complex structure of streaming replication (PG 9.3) like:
master --> replica1
|
+-----> replica2 --> replica21
|
+------> replica22 --> replica221
Now I want to retire master and make replica2 the new master:
+------> replica1
|
replica2 --> replica21
|
+------> replica22 --> replica221
replica2 is currently a synchronous replica.
If I "promote" replica2 a new timeline is created. Hence, I have to
instruct all other replicas to follow that new timeline
(recovery_target_timeline = 'latest' in recovery.conf).
On the other hand, since replica2 is synchronous it should have all
transactions when master is shut down. So, I am thinking do I really
need a new timeline? Can't I just remove recovery.conf on replica2 and
restart it as a master. The only thing I then have to do is to point
replica1 to it.
Is that a way to go? If "promoting" is better than why?
Thanks,
Torsten
On Wed, Jul 29, 2015 at 3:46 PM, Torsten Förtsch <torsten.foertsch@gmx.net> wrote: > Hi, > > we have a complex structure of streaming replication (PG 9.3) like: > > master --> replica1 > | > +-----> replica2 --> replica21 > | > +------> replica22 --> replica221 > > Now I want to retire master and make replica2 the new master: > > +------> replica1 > | > replica2 --> replica21 > | > +------> replica22 --> replica221 > > replica2 is currently a synchronous replica. > > If I "promote" replica2 a new timeline is created. Hence, I have to > instruct all other replicas to follow that new timeline > (recovery_target_timeline = 'latest' in recovery.conf). PostgreSQL 9.3 supports cascade standby to follow automatically the new master after the timeline switch. In your case even if the timeline is changed, you need to start the standby setup for "replica1" only from scratch. All others follows automatically the new master. Regards, Hari Babu Fujitsu Australia