mongodb - How to properly configure multi datacenters replica set members for efficient dc crash handling and write ack? -


considering mongodb replica set 5 members using 3 datacenters.

  • dc1 hosts 2 members (r1,r2), primary , secondary
  • dc2 hosts 2 members (r3,r4), 2 secondaries
  • dc3 hosts 1 arbiter

i use approppriate write concern :

  • to able continue writing data if datacenter lost
  • but have write done on both datacenters before ack when both dc up. using following distribution

please tell me if i'm wrong these expectations :

  • using w:3 data written @ least 1 host of dc2, if datacenter goes down write blocked indefinitely, waiting third replica goes up. can't use w:3.
  • using w:majority, considering 'majority' computed using replica set members defined in configuration , not ones up/joignable after change in set due data center down, write block, in previous w:3 case. can't use w:majority.
  • using w:2, data written primary , replicated on nearest secondary, on same datacenter.
  • using w:eachdc work when dc up, when 1 dc goes down write blocked.

how configure members , writeconcerns :

  • handle write on both dc before ack application.
  • handle 1 dc down , still allow write members
  • have member in each dc high priority elections primary writeconcern. way when both dc write replicated member on remote dc if member elected new primary after dc goes down contain more up2date data other secondaries on same dc, , limit rollback issues.

thanks help. regards.

i think first , second point contradict each other, cannot have both.

for guide on how set write concern require ack both datacenters, check out custom multidatacenter write concerns, topic that's part of replica set tags. think may have seen based on having write concern "w:eachdc", there if haven't.

if require ack both datacenters, how can expect success when 1 datacenter down? cannot require both dc's write , have write succeed if 1 dc can't write. have change write concern. if write should succeed when 1 datacenter it, not both, don't want write concern want.


Comments

Popular posts from this blog

java - Oracle EBS .ClassNotFoundException: oracle.apps.fnd.formsClient.FormsLauncher.class ERROR -

c# - how to use buttonedit in devexpress gridcontrol -

nvd3.js - angularjs-nvd3-directives setting color in legend as well as in chart elements -