Re: Failover replication building a new master

From: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
To: Tom Loder <tom(dot)loder(at)servelec-technologies(dot)com>, "pgsql-general(at)lists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Failover replication building a new master
Date: 2018-06-06 14:20:53
Message-ID: 32f5d09a-3989-1c68-18c2-cdf21cd7d8ad@aklaver.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 06/05/2018 05:43 AM, Tom Loder wrote:
> I am using Postgres 10.4, and using replication, I have managed to set up four servers, with one running as a master and the other three running with streaming replication from the master.
>
> I have used the command:
> psql -c "ALTER SYSTEM SET synchronous_standby_names TO 'FIRST 1(S2,S3,S4)';" so that at least one of the three slave clusters are SYNCED to the master.
>
> If I run the following command I get the following back:
>
> SELECT pid, usename, application_name as name,state, client_addr, sent_lsn, write_lsn, flush_lsn, replay_lsn, sync_priority, sync_state FROM pg_stat_replication;
>
> pid | usename | name | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | sync_priority | sync_state
> -------+---------+-------+-----------+-------------+-----------+-----------+-----------+------------+---------------+------------
> 26215 | replica | S3 | streaming | 0/6000000 | 0/6000000 | 0/6000000 | 0/6000000 | 2 | potential
> 26200 | replica | S4 | streaming | 0/6000000 | 0/6000000 | 0/6000000 | 0/6000000 | 3 | potential
> 26186 | replica | S2 | streaming | 0/6000000 | 0/6000000 | 0/6000000 | 0/6000000 | 1 | sync
>
> When I take out my master server (S1) I setup S2 as the master using a bash script and I update the recovery.conf files on the other two servers to change the replication to run from S2.

I am not sure what is going on here as I am not that familiar with
synchronous replication. I do think it would aid those that can help if
you provided the contents of :

1) The Bash script

2) The recovery.conf file.

Also are there relevant log entries for S2, S3 and S4?

> I have changed the setting for synchronouse_standby_names using:
>
> psql -c "ALTER SYSTEM SET synchronous_standby_names TO 'FIRST 1(S1,S3,S4)';" hoping that one of the remaining two or possibly the old master will SYNC to the new master (S2).
>
> However when I check on S2 I get the following output from pg_stat_replication:
>
> pid | usename | name | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | sync_priority | sync_state
> ------+---------+-------+---------+-------------+-----------+-----------+-----------+------------+---------------+------------
> 6418 | replica | S4 | startup | 0/D000098 | 0/D000098 | 0/D000098 | 0/D000098 | 3 | potential
> 6417 | replica | S3 | startup | 0/D000098 | 0/D000098 | 0/D000098 | 0/D000098 | 2 | potential
>
> If I also get the original master (S1) running and set it up as a Slave this also will not "SYNC". How can I get the standby servers to SYNC to the new Master (S2) without doing a new BaseBackup from S2 to the other servers?
>
> Thanks
>
> Tom
>
>
>
>
>
>
>
>

--
Adrian Klaver
adrian(dot)klaver(at)aklaver(dot)com

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2018-06-06 14:32:27 Re: Using distinct in an aggregate prevents parallel execution?
Previous Message Adrian Klaver 2018-06-06 14:06:37 Re: Which backend using which pg_temp_N schema?