Search code examples
mongodbreplicasetmongodb-mms

How to set "arbiterOnly" to an existing node in a replicaset, from MongoDB MMS portal?


I am trying to configure a replica set, in Azure Cloud with MongoDB MMS service. I have created a replica set with three nodes, one as primary and two secondaries. How can I make one of those secondary nodes as arbitrary ?


Solution

  • You can't directly "convert" a secondary to an arbiter through replica set reconfiguration. A secondary is a data-bearing node whereas an arbiter is not, so the step of removing a secondary (and dropping data) needs to be explicit.

    Via MMS you need to:

    • edit your deployment
    • add an arbiter
    • remove a secondary

    The MMS documentation has a tutorial with more detailed steps to Replace a Member with an Arbiter.

    Data redundancy consideration with an arbiter in a three node replica set

    It's worth noting the data redundancy impact of having an arbiter in a three node replica set. Technically the fault tolerance of a three node replica set allows any one node to be unavailable and still maintain a primary.

    However, if you only have two data-bearing nodes plus an arbiter the impact of a single node being unavailable is different if that node happens to be data-bearing (primary or secondary) versus an arbiter.

    If a single unavailable node is data-bearing, then your replica set:

    • no longer has data redundancy or active replication (since there would only be a single remaining data node)
    • can only satisfy a single node write concern (which will be an issue if your application code expects a majority or w:2 write concern)