【问题标题】:MongoDB replica set failedMongoDB 副本集失败
【发布时间】:2015-12-16 09:39:38
【问题描述】:

我有一个 MongoDB 副本集,包括三个节点,1 个主节点,1 个辅助节点和一个仲裁节点。

当我从主节点对辅助节点执行初始重新同步时,主节点被终止。当我检查主节点的日志时,显示的异常是

严重:地址无效访问:0x7fcde1e00ff0SEVERE:地址无效访问:0x7fcde1e00ff0

严重:收到信号:7(总线错误)

从那时起,由于此异常,此主节点未启动,辅助节点卡在 STARTUP2 状态。

我能够在不同端口上启动主节点作为独立节点(或在维护模式下)并读取其数据。但是,每当我将它作为副本集的一部分运行时,它就会因上述异常而终止

主要和次要使用 RAID0 作为它们的存储。数据大小约为 550GB。

我将主节点(当前已关闭)的全部数据复制到辅助节点(处于STARTUP2状态),然后重新启动辅助节点。但它也没有奏效。辅助节点在重新启动时被选为主节点,但也会在选举后的一秒内终止,但以下异常:

严重:logOp() 中的致命 DBException:10334 BSONObj 大小:50359410 (0x3006C72) 无效。大小必须在 0 到 16793600(16MB) 之间 第一个元素:2:?type=111

严重:调用终止(),打印堆栈(如果为平台实现): 0x11fd1b1 0x11fc438 0x7ff56dc01846 0x7ff56dc01873 0xe54c9e 0xc4de1b 0xc58f46 0xa0bac1 0xa0c250 0xa0f1bf 0xa0fcc1 0xa1323e 0xa2949a 0xa2af32 0xa2cd36 0xd61654 0xba21a2 0xba3780 0x7724a9 0x11b2fde 强>

在这种情况下如何恢复和恢复副本集。

我也有这些数据的备份。我可以删除此副本集并使用此备份数据重新创建副本集吗?

在这个 MongoDB 集群中还有另一个副本集运行良好。

【问题讨论】:

  • 您是否在配置文件中启用了身份验证?您能否将配置文件分享给我们,以便更好地解决问题。
  • 否,未启用身份验证。
  • 我尝试了几天,但在排除此问题后找不到任何解决方案。所以我重新创建了副本集并从备份中恢复了数据。
  • 你能分享你的配置文件吗?副本之间是否还有端口开放??
  • 我现在没有确切的配置文件,但我在那里定义的参数(用于数据节点)是:log path, dbPath, port, maxIncomingConnections, replSetName, oplogSizeMB, maxIncomingConnections & 设置了以下参数logAppend: true, journal: enabled: true, fork: true, enableLocalhostAuthBypass: false, newCollectionsUsePowerOf2Sizes: false, clusterRole: shardsvr 副本之间的端口也是开放的

标签: mongodb


【解决方案1】:

由于复制滞后,您的辅助服务器无法获得资格。 您可以发布您的rs.status() 的输出吗?

您的辅助服务器可能有一个“找不到要同步的成员”infoMessage

由于内存不足,我之前也遇到过类似的情况。它可以是任何东西。

通过将主服务器的数据复制到辅助服务器上的另一个文件夹并在其上的某个其他端口上启动一个新实例来修复它,然后将其添加到副本(使用{ force: true } 选项),以便辅助服务器有某个地方同步来源。

您也可以销毁副本并重新创建它,但请注意不要丢失副本的操作日志。

【讨论】:

  • 我销毁了副本集并使用备份数据重新创建了它,因为当时我没有找到任何其他解决方案。所以我现在不能分享rs.status() 的输出。但我记得,输出显示主节点和仲裁节点为“不可访问/健康”,辅助节点处于“STARTUP2”状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
相关资源
最近更新 更多