mongos崩溃后无法重启问题的解决方法_MongoDB

来源:脚本之家  责任编辑:小易  

前言

官方文档:https://docs.mongodb.com/manual/reference/program/mongos/#bin.mongos

mongos是MongoDB shard的缩写,它是一个为应用层提供查询请求并决定数据在MongoDB分片中位置的路由服务。从应用层的角度来看,mongos的行为和一个MongoDB实例是没有区别的。

详细的配置参数,大概浏览一遍官方文档即可,需要用到的时候再去查就行了。

由于近期有不同用户先后遇到SERVER-52654,做一些说明:

影响版本

所有使用MongoDB 4.2.2+,并使用了分片的集群。

问题现象

从上次重启config节点,或者重新选举90或180天后,所有mongos会同时crash,并且无法重新启动。

问题原因

该问题是由于config节点无法正常刷新签名密钥导致。正常情况下存在2个密钥,一个正在使用的,将在90天内过期,一个即将使用的将在180天内过期。SERVER-52654导致config无法正常刷新密钥,所以在现有密钥过期后mongos将崩溃。

修复版本

该问题将在4.2.12修复。4.2.12目前已发布。

规避办法

在90天内将primary节点stepDown一次即可避免该问题发生。如果想知道签名密钥的确切过期时间,可以连接到任意config节点,并执行以下脚本:

db.getSiblingDB("admin").system.keys.find().map(k => { return { _id: k._id, purpose: k.purpose, expiresAt: new Date(k.expiresAt.getTime()*1000) }})

如果存在2个密钥(一个90天内过期,一个180天内过期),则暂时不用操作;如果只有1个密钥,则应该在90天内执行stepDown切换config主节点。

由于system.keys集合需要特殊权限方可访问,如果遇到权限问题,可能需要以下脚本来创建必要的角色(将ADMIN更换为您使用的用户):

use admin;
db.createRole({
 role: "query_keys",
 privileges: [
 { resource: { db: "admin", collection: "system.keys"}, actions: [ "find" ] },
 ],
 roles: [ ]
});
db.grantRolesToUser("ADMIN", ["query_keys"])

config主节点重新选举后将产生新的过期时间,仍可通过上述脚本检查是否已刷新。

总结

到此这篇关于mongos崩溃后无法重启问题的解决方法的文章就介绍到这了,更多相关mongos崩溃后无法重启内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:MongoDB常用操作命令大全MongoDB各种查询操作详解MongoDB中的一些坑(最好不要用)MongoDB 语法使用小结Mongodb 忘记密码的解决办法

  • 本文相关:
  • 深入了解mongodb 分布式集群
  • mongodb错误32-bit servers don''t have journaling enabled by
  • centos7防火墙导致java程序访问mongodb3.0.1时报错的问题分析
  • mongodb远程访问配置步骤详解
  • 深究从mongodb的objectid中获取时间信息
  • mongodb实战之全文搜索功能
  • 关于单台mongodb实例开启oplog的过程详解
  • centos 6.4创建mongodb副本集
  • mongodb中的mapreduce简介
  • mongodb中mapreduce编程模型使用实例
  • 安装mongodb后服务启动不了请问怎么解决
  • mongodb无法启动,由于目标计算机积极拒绝,无法连...
  • mongodb当机后,重启mongodb,php就连接不上mongod...
  • mongodb 服务无法启动
  • mongodb启动了无法连接怎么办
  • systemctl 启动 mongodb出现问题,是什么原因,或...
  • linux下的mongodb服务自动关闭,是什么原因?
  • Centos 7下Mongodb开机无法自启动怎么办
  • mongodb 路由进程无法启动
  • ubuntu服务器上面mongodb总是挂掉,重启服务后提示...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mongodbmongodb常用操作命令大全mongodb各种查询操作详解mongodb中的一些坑(最好不要用)mongodb 语法使用小结mongodb 忘记密码的解决办法深入了解mongodb 分布式集群mongodb错误32-bit servers don""t have journaling enabled by centos7防火墙导致java程序访问mongodb3.0.1时报错的问题分析mongodb远程访问配置步骤详解深究从mongodb的objectid中获取时间信息mongodb实战之全文搜索功能关于单台mongodb实例开启oplog的过程详解centos 6.4创建mongodb副本集mongodb中的mapreduce简介mongodb中mapreduce编程模型使用实例mongodb常用操作命令大全mongodb各种查询操作详解mongodb数据库插入、更新和删除操mongodb 数据库操作--备份 还原 mongodb插入数据的3种方法mongodb中使用distinct去重的简单浅谈mysql和mariadb区别(mariadbmongodb整库备份与还原以及单个cmongodb查询操作限制返回字段的方mongodb 实现远程连接mongodb 用户管理mongodb使用心得简单总结mongodb入门教程之常用的运维技术介绍mongodb操作类封装实例代码windows下把mongodb安装为系统服务的方法mongodb运维_动力节点java学院整理vs2019 下用 vb.net编写窗体程序连接 monmongodb中mapreduce实现数据聚合方法详解mongodb系列教程(三):windows中下载和浅析mongodb 全文检索
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved