database runtime_error ai_generated true

MongoServerError: WriteConcernError: Not enough data-bearing nodes

ID: database/mongodb-write-concern-timeout

Also available as: JSON · Markdown · 中文
78%Fix Rate
82%Confidence
1Evidence
2024-02-10First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
MongoDB 4.4.18 active
MongoDB 5.0.14 active
MongoDB 6.0.5 active

Root Cause

MongoDB 副本集在满足写入关注(write concern)时,由于多数节点不可用或数据不同步,导致写入操作超时。

generic

中文

MongoDB 副本集在满足写入关注(write concern)时,由于多数节点不可用或数据不同步,导致写入操作超时。

Official Documentation

https://www.mongodb.com/docs/manual/reference/write-concern/

Workarounds

  1. 78% success 检查副本集状态:rs.status(),确认所有节点处于 PRIMARY 或 SECONDARY 状态。如果节点卡在 RECOVERING,可能需要重新同步。
    检查副本集状态:rs.status(),确认所有节点处于 PRIMARY 或 SECONDARY 状态。如果节点卡在 RECOVERING,可能需要重新同步。
  2. 65% success 临时降低写入关注级别:db.collection.insertOne({data: 'test'}, {writeConcern: {w: 1}}); 然后修复副本集同步问题。
    临时降低写入关注级别:db.collection.insertOne({data: 'test'}, {writeConcern: {w: 1}}); 然后修复副本集同步问题。

中文步骤

  1. 检查副本集状态:rs.status(),确认所有节点处于 PRIMARY 或 SECONDARY 状态。如果节点卡在 RECOVERING,可能需要重新同步。
  2. 临时降低写入关注级别:db.collection.insertOne({data: 'test'}, {writeConcern: {w: 1}}); 然后修复副本集同步问题。

Dead Ends

Common approaches that don't work:

  1. 60% fail

    增加副本集节点数而不确保同步状态,可能仍然无法满足写入关注。

  2. 70% fail

    降低写入关注级别为 w:1 可能导致数据丢失风险,且不解决根本问题。