← Все статьи

MongoDB: rs.addArb зависает — ошибка implicit default write concern

Автор: Юрий Нефёдов, системный инженер · 31.08.2021 · обновлено 24.10.2026

При добавлении арбитра в набор реплик команда rs.addArb долго не отвечает, а потом завершается ошибкой:

Reconfig attempted to install a config that would change the implicit default write concern. Use the setDefaultRWConcern command to set a cluster-wide write concern and try the reconfig again

Причина

Начиная с MongoDB 5.0, если глобальный write concern не задан явно, сервер вычисляет его сам по составу набора реплик. Добавление арбитра меняет этот вычисленный параметр, и MongoDB отказывается делать это молча: она просит явно указать, с каким подтверждением записи работать.

Решение

Задайте глобальный write concern явно. В примере запись считается успешной, когда её подтвердили два узла:

db.adminCommand({
  "setDefaultRWConcern" : 1,
  "defaultWriteConcern" : {
    "w" : 2
  }
})

Значение выбирайте под свою схему: "w": 1 — быстрее, но запись может потеряться при сбое основного узла; "w": "majority" — надёжнее. Проверить текущую настройку и затем добавить арбитра:

db.adminCommand({ getDefaultRWConcern: 1 })
rs.addArb("arbiter-host:27017")

Нужна помощь с настройкой?

Если задача сложнее, чем в статье, напишите мне. Первая консультация бесплатная.