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

 更新时间:2021年02月03日 09:56:48   投稿:daisy  
这篇文章主要给大家介绍了关于mongos崩溃后无法重启问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

官方文档: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崩溃后无法重启内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文搞懂Scrapy与MongoDB交互过程

    一文搞懂Scrapy与MongoDB交互过程

    这篇文章主要介绍了Scrapy与MongoDB交互过程,文末给大家介绍了类方法@classmethod的相关知识,需要的朋友可以参考下
    2022-07-07
  • MongoDB中连接字符串的编写

    MongoDB中连接字符串的编写

    MongoDB中字符串连接不区分大小写,并非所有MongoDB驱动都支持完整的连接字符串,不支持此格式连接字串的驱动会有替代连接方案,
    2015-05-05
  • MongoDB实现创建删除数据库、创建删除表(集合 )、数据增删改查

    MongoDB实现创建删除数据库、创建删除表(集合 )、数据增删改查

    这篇文章介绍了MongoDB实现创建删除数据库、创建删除表(集合 )、数据增删改查的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • MongoDB中唯一索引(Unique)的那些事

    MongoDB中唯一索引(Unique)的那些事

    这篇文章主要给大家介绍了关于MongoDB中唯一索引(Unique)的那些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • mongodb replica set 添加删除节点的2种方法

    mongodb replica set 添加删除节点的2种方法

    replica set多服务器主从,添加,删除节点,肯定会经常遇到的。下面详细说明一下,添加,删除节点的2种方法。
    2014-07-07
  • Mongodb数据库误删后的恢复方法(两种)

    Mongodb数据库误删后的恢复方法(两种)

    本文给大家分享两种方法来实现Mongodb数据库误删后的恢复,每种方法给大家介绍的都非常详细,需要的朋友参考下吧
    2018-08-08
  • MongoDB数据更新方法干货篇

    MongoDB数据更新方法干货篇

    之前给大家分享了MongoDB中数据查询的相关方法和技巧,那么下面这篇文章主要给大家介绍了MongoDB中数据更新方法的相关资料,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-05-05
  • MongoDB系列教程(三):Windows中下载和安装MongoDB

    MongoDB系列教程(三):Windows中下载和安装MongoDB

    这篇文章主要介绍了MongoDB系列教程(三):MongoDB下载和安装,本文讲解使用Windows环境安装MongoDB,需要的朋友可以参考下
    2015-05-05
  • 详解MongoDB中用sharding将副本集分配至服务器集群的方法

    详解MongoDB中用sharding将副本集分配至服务器集群的方法

    副本集是MongoDB的主从复制中的重要功能,经常被用来作额外的备份,这里我们就来详解MongoDB中用sharding将副本集分配至服务器集群的方法,首先还是来回顾一下MongoDB中副本集的基本知识:
    2016-07-07
  • MongoDB数据库查看慢查询级别以及慢查询日志

    MongoDB数据库查看慢查询级别以及慢查询日志

    最近项目上一直在用mongodb作为数据库,mongodb有他的优势,文档型类json格式存储数据,修改起来更方便,但是最近在用mongodb出现了查询缓慢的问题,这篇文章主要给大家介绍了关于MongoDB数据库查看慢查询级别以及慢查询日志的相关资料,需要的朋友可以参考下
    2023-05-05

最新评论