Thread: [GENERAL] How does BDR replicate changes among nodes in a BDR group

[GENERAL] How does BDR replicate changes among nodes in a BDR group

From
"Zhu, Joshua"
Date:

New to this group, so if this is not the right place to ask this question or it has been asked before/documented, please kindly point me the right group or the right thread/documentation, thanks.

 

A BDR novice, I would like to know how BDR replicate changes among nodes in a BDR group, let’s say I have a 4 node group consisting of A, B, C and D, established as follows

 

A is the initial node

B joins via A

C joins via B

D joins via A

 

How does BDR replicate a change delta on A to B, C, and D? e.g., A replicates delta to B and D, and B to C, or some other way, or not statically determined?

How about a change delta on B to A, C and D? e.g., B replicates delta to A and C, A to D, or?

How about a change delta on C to A, B and D? e.g., C replicates delta to B, B to A, A to D, or?

How about a change delta on D to A, B and C? e.g., D replicate delta to A, A to B, B to A, or?

 

Thanks

Re: [GENERAL] How does BDR replicate changes among nodes in a BDR group

From
Craig Ringer
Date:
On 8 June 2017 at 04:50, Zhu, Joshua <jzhu@vormetric.com> wrote:

> How does BDR replicate a change delta on A to B, C, and D?

It's a mesh.

Once joined, it doesn't matter what the join node was, all nodes are equal.

> e.g., A
> replicates delta to B and D, and B to C, or some other way, or not
> statically determined?

Each node replicates to all other nodes in an undefined order
determined by network timing etc.


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


Re: [GENERAL] How does BDR replicate changes among nodes in a BDRgroup

From
"Zhu, Joshua"
Date:
Thanks for the clarification.

A follow up question, then, given *once joined all nodes are equal*, is that:

should the node A dies or taken out of the group, the remaining three node group (with B, C and D) would continue to
functionproperly, correct?
 
[somewhere I saw the term "downstream" nodes was used, and I am not clear what that meant in the context of a
mesh-connectedgroup] 
 

Thanks again

-----Original Message-----
From: Craig Ringer [mailto:craig@2ndquadrant.com] 
Sent: Wednesday, June 07, 2017 5:59 PM
To: Zhu, Joshua <jzhu@thalesesec.net>
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] How does BDR replicate changes among nodes in a BDR group

On 8 June 2017 at 04:50, Zhu, Joshua <jzhu@vormetric.com> wrote:

> How does BDR replicate a change delta on A to B, C, and D?

It's a mesh.

Once joined, it doesn't matter what the join node was, all nodes are equal.

> e.g., A
> replicates delta to B and D, and B to C, or some other way, or not 
> statically determined?

Each node replicates to all other nodes in an undefined order determined by network timing etc.


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


Re: [GENERAL] How does BDR replicate changes among nodes in a BDR group

From
Craig Ringer
Date:
On 9 June 2017 at 02:47, Zhu, Joshua <jzhu@vormetric.com> wrote:
> Thanks for the clarification.
>
> A follow up question, then, given *once joined all nodes are equal*, is that:
>
> should the node A dies or taken out of the group, the remaining three node group (with B, C and D) would continue to
functionproperly, correct? 

Yes. Though you'll need to tell them node A isn't coming back by
parting it from one of the other nodes at some point, otherwise
they'll accumulate WAL in pg_xlog and run out of disk space eventually
as they hold onto the resources A would need to sync back up.
Monitoring is important.


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