AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 185014
Accepted
Sampo
Sampo
Asked: 2017-09-05 01:43:15 +0800 CST2017-09-05 01:43:15 +0800 CST 2017-09-05 01:43:15 +0800 CST

当 master 卡在 IOWait 上时 MongoDB 故障转移?

  • 772

我们在 AWS 中托管了一个具有三个节点的 MongoDB 3.4 副本集:一个主节点、一个辅助故障转移节点和一个仲裁节点。通常,如果主实例挂掉,到辅助实例的故障转移会非常快(10-30 秒)。

今天我们遇到了一个网络问题,MongoDB 主实例与包含数据库的磁盘失去连接大约 3 分钟,CPU IOWait 达到 100%。在此期间,对主节点的查询刚刚挂起并进入超时状态。可能是因为主节点仍在运行(尽管没有响应),副本集没有进行故障转移,甚至没有开始投票。

在这种情况下是否有也会产生故障转移的配置?或者是否有一些现成的工具可以在对主节点的简单查询开始花费太长时间时强制进行故障转移?

mongodb failover
  • 2 2 个回答
  • 754 Views

2 个回答

  • Voted
  1. Best Answer
    Andy S
    2017-09-22T06:40:59+08:002017-09-22T06:40:59+08:00

    在SERVER-14139的评论中广泛讨论了一个密切相关的问题,这是针对 mongodb 提交的错误报告。总而言之,在服务器进程中构建一个完全通用的挂起检测系统是不可行的。

    中的评论讨论了一种监视方法,该方法可以终止进程或关闭操作系统,并且可以使用 cron 作业或看门狗守护程序来完成。Because a mongod process cannot win an election before it has read and written some data to its storage engine, it is safe to immediately attempt to restart mongod after you kill it. 重新启动的进程不应该接受连接,当然也无法赢得主要选举。

    链接到 SERVER-14139 的票证涵盖了企业(非免费)MongoDB 版本中存储看门狗定时器的实现。可以使用看门狗守护程序或外部监控进程的组织应该更喜欢这种方法,因为它可以防止更多类型的资源故障。

    • 4
  2. JJussi
    2017-09-05T01:53:37+08:002017-09-05T01:53:37+08:00

    通常在主服务器上,你给出 command rs.stepDown(),但我认为这种情况下它不会工作,因为你的辅助服务器无法读取主 opLog。

    在这种情况下,最快的做法是在这些节点之间设置防火墙。因此,您发出命令阻止端口 27017(或您使用的任何端口)。您的辅助节点和仲裁节点无法获得心跳,他们投票决定必须移动主要节点。

    • -1

相关问题

  • 使用集群设置 Mongo

  • PostgreSQL 9.1 中的自动故障转移

  • MongoDB 的 find 和 findone 调用之间的区别

  • 分片对小集合有效吗?

  • 关于操作/管理 MongoDB 的良好资源

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve