Re: how to switch old replication Master to new Standby after promoting old Standby

From: "Shulgin, Oleksandr" <oleksandr(dot)shulgin(at)zalando(dot)de>
To: John Lumby <johnlumby(at)hotmail(dot)com>
Cc: pgsql general <pgsql-general(at)postgresql(dot)org>
Subject: Re: how to switch old replication Master to new Standby after promoting old Standby
Date: 2016-03-14 17:54:11
Message-ID: CACACo5RVVAw24NPk_x6GmprFg-Ao4ZARj+83EWiXPMetSv-sQQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Mon, Mar 14, 2016 at 6:28 PM, John Lumby <johnlumby(at)hotmail(dot)com> wrote:

>
> From: johnlumby(at)hotmail(dot)com
> To: pgsql-general-owner(at)postgresql(dot)org
> Subject: how to switch old replication Master to new Standby after
> promoting old Standby
> Date: Mon, 14 Mar 2016 13:23:29 -0400
>
> In a scenario involving replication where no failure occurs but I want to
> interchange Master <->Standby,
> *and* want to avoid making another full base backup and rsyncing it across,
> I have found it easy to promote old Standby to new Master with pg_ctl
> promote,
> but very difficult to restart the old Primary as a new Standby *without*
> performing new base backup.
>
> Assume current 9.5.1 and using streaming replication with a named
> replication slot if relevant
>
> Second assumption - I am able to temporarily prevent any relational
> updates to the database before I start the switchover
> e.g. the
> default_transaction_read_only = on
> setting together with being able to control what transactions do if
> anything
>
> So I reach a point where both systems have postgresql running without any
> replication,
> both have identical content in all databases (that I can control),
> and I am willing to tolerate short restarts if need be and also to
> scp/rsync the contents of pg_xlog
> and other small files but *not* the entire cluster directory or any
> database base directories.
>
> What do I do next?
>
> Here is what I have found seems to work but I am not sure it is robust:
>
> 1. shut down both new Master and intended-to-be-new-Standby
> 2. on intended-to-be-new-Standby, remove the entire content of pg_xlog and
> the global/pg_control
> 3. from new Master , tar + scp the entire content of pg_xlog and the
> global/pg_control to intended-to-be-new-Standby
>

That does seem like a very risky strategy to me. Have you taken a look at
pg_rewind (which is now part of the distribution)?

--
Alex

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Elein 2016-03-14 18:00:27 Re: enum bug
Previous Message John Lumby 2016-03-14 17:28:16 how to switch old replication Master to new Standby after promoting old Standby