You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB 6单节点副本集Docker Compose配置失败排查

解决MongoDB 6单节点副本集启动失败问题

问题原因

MongoDB 6对单节点副本集的默认行为做了调整,即使未启用加密/TLS,默认的密钥缓存刷新机制会在副本集完成初始化前尝试使用非local读级别,触发NotYetInitialized错误。

修复步骤

1. 显式指定认证机制

在Docker Compose的MongoDB服务配置中,添加启动参数强制使用不需要密钥缓存的SCRAM认证机制:

services:
  mongodb:
    image: mongo:6
    command: mongod --replSet rs0 --setParameter authenticationMechanisms=SCRAM-SHA-1,SCRAM-SHA-256
    ports:
      - "27017:27017"
    volumes:
      - mongodb_data:/data/db

或者通过配置文件(mongod.conf)设置:

setParameter:
  authenticationMechanisms: "SCRAM-SHA-1,SCRAM-SHA-256"

2. 确保副本集正确初始化

MongoDB 6不再自动完成单节点副本集的初始化,需要手动执行初始化命令:

  • 进入运行中的MongoDB容器:
    docker exec -it <container-name> mongosh
    
  • 执行初始化命令(替换rs0为你的副本集名称):
    rs.initiate({
      _id: "rs0",
      members: [{ _id: 0, host: "localhost:27017" }]
    })
    
    如果容器使用自定义网络,需将host改为容器的服务名(如mongodb:27017)。

3. 禁用不必要的安全特性(可选)

如果完全不需要认证和加密,可以在启动参数中添加--noauth:

command: mongod --replSet rs0 --noauth --setParameter authenticationMechanisms=SCRAM-SHA-1,SCRAM-SHA-256

验证

执行初始化后,等待几秒,执行rs.status()查看副本集状态,当stateStr显示为PRIMARY时,说明启动正常。

内容的提问来源于stack exchange,提问作者Franck Anso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:22:51