Re: adding a bdr node using bcv backup - Mailing list pgsql-general

From (Daniel Stolf)
Subject Re: adding a bdr node using bcv backup
Date
Msg-id CABfnVgWs_kpvxya0xk8akujc1KM99NhL7XVzSocQbUO_Qjk9Zg@mail.gmail.com
Whole thread Raw
In response to Re: adding a bdr node using bcv backup  ("(Daniel Stolf)" <dstolf@gmail.com>)
List pgsql-general
I'm sorry, I didn't send the correct information about node 2...

Here's what I get on all three nodes after I take a snapshot on node 1 and bring it up on node 3...

=== On Node 1: ===
bdrdemo=# select bdr.bdr_get_local_nodeid();
     bdr_get_local_nodeid      
-------------------------------
 (6239328434665526195,1,16385)
(1 row)

bdrdemo=# select bdr.bdr_get_local_node_name();
 bdr_get_local_node_name 
-------------------------
 node1
(1 row)

bdrdemo=# SELECT * FROM pg_replication_slots;
                slot_name                | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn 
-----------------------------------------+--------+-----------+--------+----------+--------+------+--------------+-------------
 bdr_16385_6241964183952916534_1_16385__ | bdr    | logical   |  16385 | bdrdemo  | t      |      |         4593 | 0/123E9808


=== On Node 2: ===
bdrdemo=# select bdr.bdr_get_local_nodeid();
     bdr_get_local_nodeid      
-------------------------------
 (6241964183952916534,1,16385)
(1 row)

bdrdemo=# select bdr.bdr_get_local_node_name();
 bdr_get_local_node_name 
-------------------------
 node2
(1 row)

bdrdemo=# SELECT * FROM pg_replication_slots;
                slot_name                | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn 
-----------------------------------------+--------+-----------+--------+----------+--------+------+--------------+-------------
 bdr_16385_6239328434665526195_1_16385__ | bdr    | logical   |  16385 | bdrdemo  | t      |      |         3039 | 0/4EB0D28
(1 row)

=== On Node 3: ===
bdrdemo=#  select bdr.bdr_get_local_nodeid();
     bdr_get_local_nodeid      
-------------------------------
 (6239328434665526195,1,16385)
(1 row)

bdrdemo=# select bdr.bdr_get_local_node_name();
 bdr_get_local_node_name 
-------------------------
 node1
(1 row)

bdrdemo=# SELECT * FROM pg_replication_slots;
 slot_name | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn 
-----------+--------+-----------+--------+----------+--------+------+--------------+-------------
(0 rows)


On Thu, Jan 21, 2016 at 10:46 AM (Daniel Stolf) <dstolf@gmail.com> wrote:
Ok, I'm at work now and I have access to my lab...

==== On Node 1: ====
bdrdemo=# select bdr.bdr_get_local_nodeid();
     bdr_get_local_nodeid      
-------------------------------
 (6239328434665526195,1,16385)
(1 row)

bdrdemo=# select bdr.bdr_get_local_node_name();
 bdr_get_local_node_name 
-------------------------
 node1
(1 row)

bdrdemo=# select bdr.bdr_get_local_nodeid();
     bdr_get_local_nodeid      
-------------------------------
 (6239328434665526195,1,16385)
(1 row)

bdrdemo=# select bdr.bdr_get_local_node_name();
 bdr_get_local_node_name 
-------------------------
 node1
(1 row)

================

=== On Node 2: ===
bdrdemo=# select bdr.bdr_get_local_nodeid();
     bdr_get_local_nodeid      
-------------------------------
 (6239328434665526195,1,16385)
(1 row)

bdrdemo=# select bdr.bdr_get_local_node_name();
 bdr_get_local_node_name 
-------------------------
 node1
(1 row)
================

Now, I take a snapshot from node1 and bring up a clone on node3... Here's what I got on node3:

=== On Node 3: ===
     bdr_get_local_nodeid      
-------------------------------
 (6239328434665526195,1,16385)
(1 row)

bdrdemo=# select bdr.bdr_get_local_node_name();
 bdr_get_local_node_name 
-------------------------
 node1
(1 row)

bdrdemo=# SELECT * FROM pg_replication_slots;
 slot_name | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn 
-----------+--------+-----------+--------+----------+--------+------+--------------+-------------
(0 rows)

================

As you can see, when I brought up a clone of node1 on node3, it got the same node name and id as node1...

So here's what I don't get:

1) if I have to create a new replication slots on node1 and 2 beforehand using "pg_create_physical_replication_slot" , don't they need the if of node3 on their name?
2) If node3 has the same name and if as node1, won't that introduce a conflic? Don't I need to clean that up before node3 can join the replication group?

Regards,
Daniel Stolf


On Thu, Jan 21, 2016 at 8:34 AM (Daniel Stolf) <dstolf@gmail.com> wrote:

Hi Craig, how are you?

Thanks for your answer. It doesn't seems too complex... Also, it's just a test scenario, I don't intend to use as a production setup or to recommend as such, at least not until I'm 100% sure I got it right...

So, assuming I get the snapshot right... The steps would be...

1) create replication slots on prior nodes before taking the snapshot (not sure how to do that, which command would it be? );
2) take the snapshot;
3) bring it up on another server;
4) use bdr_init_copy

I'm not at work right now, but I remember two things...

On node 3 I brought up the copy, if I try get local node name, it says node1, which is the node I got the copy from, ... Wouldn't I also have to do something about that? Like, delete the previous information on bdr database that went along?

Em qui, 21 de jan de 2016 00:50, Craig Ringer <craig@2ndquadrant.com> escreveu:
On 21 January 2016 at 08:29, (Daniel Stolf) <dstolf@gmail.com> wrote:
Hello there...

I'm new to postgres and I'm trying out BDR replication...

I know that when I issue the bdr.bdr_group_join command, it will copy the entire database from the host I specify on parameter 'join_using_dsn' and this may take a while depending on the network and the size of the database...

What I wanted to know is if I can leverage a bcv backup... Is it possible?

BCV seems to be an EMC backup system. It looks like a snapshot. If the snapshot taken is consistent and atomic, and if it includes both pg_xlog and the rest of the datadir and all tablespaces in the SAME snapshot taken at the SAME instant, then you can treat it much like a pg_basebackup. In that case you can use bdr_init_copy to bring it up as a new BDR node. You must either stop all writes to all other nodes or pre-create the replication slots *before* taking the snapshot though, otherwise the new node won't be able to catch up to writes done after the snapshot and before it was started.

If this sounds too complex then stick to the documented methods that work. Working from separately taken snapshots is hard to get right and could lead to subtle data problems if you get it wrong.

--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

pgsql-general by date:

Previous
From: "(Daniel Stolf)"
Date:
Subject: Re: adding a bdr node using bcv backup
Next
From: Geoff Winkless
Date:
Subject: Re: CoC [Final]