pg_basebackup from new master's slave then recovery from new master.

Started by Piotr Gasidłoover 12 years ago3 messagesgeneral
Jump to latest
#1Piotr Gasidło
quaker@barbara.eu.org

All on 9.3beta2. Current setup:

server1 (MASTER) -> server2 (SLAVE) -> server3 (SLAVE)

server2 is hot_standby and gets WALs from server1
server3 is hot_standby and gets WALs from server2

In every recovery.conf I have:

recovery_target_timeline='latest'

Now i do switchover by touching recovery.conf's trigger_file on server2.

server1 (OLD MASTER)
server2 (NEW MASTER) -> server3 (SLAVE)

Then, I take down server1 (OLD MASTER), do fresh pg_basebackup data
from server3 (SLAVE) to server1 (OLD MASTER).

Now:

1. I edit recovery.conf on server1 to NOT point to server3 (SLAVE) but
server2 (NEW MASTER) and start server1
2. I edit recovery.conf on server2 to NOT point to server2 (NEW
MASTER) but server3 (OLD MASTER) and restart server3

I get this replication setup:

server2 (NEW MASTER) -> server2 (OLD MASTER, SLAVE) -> server3 (SLAVE)

Are these (1,2) operations safe? I did it on test environment but I
need to be sure if I won't loose any data doing such things.

--
Piotr Gasidło

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

#2Piotr Gasidło
quaker@barbara.eu.org
In reply to: Piotr Gasidło (#1)
Re: pg_basebackup from new master's slave then recovery from new master.

2013/8/17 Piotr Gasidło <quaker@barbara.eu.org>:

All on 9.3beta2. Current setup:
(...)

Ehh, typo.

2. I edit recovery.conf on server2 to NOT point to server2 (NEW
MASTER) but server3 (OLD MASTER) and restart server3

Should be:

2. I edit recovery.conf on server3 to NOT point to server2 (NEW

MASTER) but server1 (OLD MASTER) and restart server3

--
Piotr Gasidło

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

#3Michael Paquier
michael@paquier.xyz
In reply to: Piotr Gasidło (#1)
Re: pg_basebackup from new master's slave then recovery from new master.

(Including the typo mistake mentioned in the 2nd email)

On Sat, Aug 17, 2013 at 8:47 PM, Piotr Gasidło <quaker@barbara.eu.org> wrote:

All on 9.3beta2. Current setup:

server1 (MASTER) -> server2 (SLAVE) -> server3 (SLAVE)

server2 is hot_standby and gets WALs from server1
server3 is hot_standby and gets WALs from server2

In every recovery.conf I have:

recovery_target_timeline='latest'

Now i do switchover by touching recovery.conf's trigger_file on server2.

server1 (OLD MASTER)
server2 (NEW MASTER) -> server3 (SLAVE)

Then, I take down server1 (OLD MASTER), do fresh pg_basebackup data
from server3 (SLAVE) to server1 (OLD MASTER).

Now:

1. I edit recovery.conf on server1 to NOT point to server3 (SLAVE) but
server2 (NEW MASTER) and start server1
2. I edit recovery.conf on server3 to NOT point to server2 (NEW
MASTER) but server1 (OLD MASTER) and restart server3

I get this replication setup:

server2 (NEW MASTER) -> server1 (OLD MASTER, SLAVE) -> server3 (SLAVE)

Are these (1,2) operations safe? I did it on test environment but I
need to be sure if I won't loose any data doing such things.

As long as the node on server1 is recreated with a new fresh backup
and is not-replugged on cluster as-is (former node on server1 might
have got ahead in term of WAL generation so it cannot reconnect to
server2 directly), there will be no problems of slave resync. In your
case, when you restructure of your cluster, even if there is a lot of
WAL activity while you perform operation 2, server3 will sync up with
server1 after restarting.
--
Michael

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