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

启动mongos服务时触发invariant()失败中止问题求助

解决mongos启动时出现的Invariant failure globalInShutdownDeprecated()错误

我看到你启动mongos服务器时遇到了这个致命的断言错误,而且已经尝试过修复所有MongoDB节点的数据库但问题依然存在。结合你提供的日志,这个错误出现在用户权限缓存初始化的环节,咱们可以从以下几个方向排查解决:

关键错误信息回顾

2020-03-30T13:52:23.241Z F - [mongosMain] Invariant failure globalInShutdownDeprecated() src/mongo/db/auth/user_cache_invalidator_job.cpp 120
2020-03-30T13:52:23.241Z F - [mongosMain] ***aborting after invariant() failure
2020-03-30T13:52:23.254Z F - [mongosMain] Got signal: 6 (Aborted).

解决方案步骤

  • 确保所有MongoDB组件版本完全一致
    MongoDB的mongos、配置服务器mongod、分片mongod必须保持主版本号一致(比如都是4.2.x),版本不匹配很容易导致初始化时的断言错误。你可以在每个节点上执行mongod --version和mongos --version确认版本,如果有差异,把所有组件升级到同一个稳定版本后再重启mongos。

  • 清理mongos的本地缓存目录
    mongos会在指定的--dbpath目录下存储路由信息、权限缓存等临时数据,这些文件损坏可能导致启动失败:

    1. 先停止所有运行的mongos进程
    2. 删除mongos数据目录下的所有文件(比如你日志里的/data/router1db/,注意别删配置服务器或分片的数据)
    3. 重新用正确的参数启动mongos
  • 检查mongos启动参数中的配置服务器连接字符串
    确认--configdb参数的格式和地址是否正确:

    • 如果配置服务器是副本集模式,连接字符串必须包含副本集名称,格式为副本集名称/节点1:端口,节点2:端口,...
    • 示例正确启动命令:mongos --configdb configRS/127.0.0.1:27011,127.0.0.1:27012 --port 27017 --dbpath /data/router1db
  • 排查权限认证相关配置
    这个错误和用户权限缓存初始化直接相关,如果集群启用了认证:

    1. 确认mongos启动时加上了--auth参数(和集群的认证配置保持一致)
    2. 确保mongos用来连接配置服务器的用户拥有clusterAdmin或root级别的权限
    3. 可以登录到配置服务器的主节点,执行db.getSiblingDB("admin").runCommand({ flushRouterConfig: 1 })来强制刷新路由和权限缓存
  • 检查系统资源与依赖库
    有时候系统资源不足或依赖库损坏也会触发这类错误:

    1. 检查服务器内存使用情况,确保mongos有足够的内存启动(可以用free -h命令查看)
    2. 确认MongoDB依赖的系统库(比如libssl、libcrypto)版本符合要求,没有损坏或缺失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:02:43