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

MongoDB副本集Linux节点卡在STARTUP状态求助

解决MongoDB副本集Linux节点卡在STARTUP状态的问题

针对你遇到的Linux副本节点停留在STARTUP状态、configVersion为-2、日志报NotYetInitialized的问题,按以下步骤排查修复:

1. 校验副本集配置一致性

  • 在主节点执行rs.conf(),检查每个节点的host字段值:确保Linux节点的host是节点自身可解析的地址(跨Azure区域建议用内部FQDN或公网IP,避免主机名解析失败)。在Linux节点上用nslookup <主节点host>或ping <主节点host>验证解析和连通。
  • 确认所有节点mongod.conf中的replication.replSetName完全一致,MongoDB对这个配置的大小写、拼写严格敏感。

2. 修复Key文件的权限与内容匹配

  • Linux节点的key文件权限必须设置为600,执行命令:
    chmod 600 /path/to/your/mongodb-keyfile
    
    权限不符合会导致节点无法加入副本集。
  • 对比主节点(Windows)和Linux节点的key文件哈希值,确保内容完全一致:
    • Windows主节点:certutil -hashfile mongodb-keyfile MD5
    • Linux节点:md5sum /path/to/your/mongodb-keyfile
      若哈希不同,重新拷贝key文件(注意避免Windows的CRLF换行符问题,建议用二进制方式传输)。

3. 强制重新同步副本节点

  • 在主节点移除异常节点:
    rs.remove("linux-node-hostname:27017")
    
  • 停止Linux节点的mongod服务:
    sudo systemctl stop mongod
    
  • 清空Linux节点的MongoDB数据目录(学习环境可放心操作,记得备份重要数据):
    sudo rm -rf /var/lib/mongodb/*
    
    (如果你的数据目录不是默认路径,替换为实际路径)
  • 启动Linux节点的mongod服务:
    sudo systemctl start mongod
    
  • 在主节点重新添加副本节点:
    rs.add("linux-node-hostname:27017")
    
    等待1-2分钟后执行rs.status(),观察节点状态是否转为SECONDARY。

4. 验证跨节点认证一致性

  • 在Linux节点用mongosh连接主节点,执行认证命令验证root用户有效性:
    db.auth("root", "your-root-password")
    
    若认证失败,在主节点重新创建一致的root用户:
    db.createUser({
      user: "root",
      pwd: "your-root-password",
      roles: ["root"]
    })
    
    确保所有节点的用户信息完全同步。

5. 排查跨区域网络细节

  • 检查Azure网络安全组(NSG):确保三个节点所在的NSG都允许27017端口的双向流量(主节点<->副本节点)。
  • 检查Linux节点本地防火墙:
    • 用firewalld的话,执行sudo firewall-cmd --list-ports确认27017/tcp已开放;未开放则执行sudo firewall-cmd --add-port=27017/tcp --permanent && sudo firewall-cmd --reload
    • 用iptables的话,执行sudo iptables -L确认有允许27017端口的规则。
  • 在Linux节点执行telnet <主节点host> 27017,验证端口连通性,确保没有超时或拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:57:27