Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB-moveChunk中止后均衡器锁定,元数据事件未记录-如何恢复_Mongodb - Fatal编程技术网

MongoDB-moveChunk中止后均衡器锁定,元数据事件未记录-如何恢复

MongoDB-moveChunk中止后均衡器锁定,元数据事件未记录-如何恢复,mongodb,Mongodb,我们的一个辅助服务器出现问题,由于致命的断言错误,moveChunk无法在此辅助服务器中复制。主mongod在日志中报告了故障(请参阅下面的日志),但自mongos/mongoc重新启动以来,这些信息似乎从未返回到mongos/mongoc。此后,我们恢复了发生故障的辅助服务器,并完全重新启动了整个集群,一切正常,但平衡器不会运行,因为仍然存在锁,并且我在changelog集合中看到,发生故障的moveChunk只有moveChunk.start条目。我已经查看了日志,我非常确定自从我们重新启动

我们的一个辅助服务器出现问题,由于致命的断言错误,moveChunk无法在此辅助服务器中复制。主mongod在日志中报告了故障(请参阅下面的日志),但自mongos/mongoc重新启动以来,这些信息似乎从未返回到mongos/mongoc。此后,我们恢复了发生故障的辅助服务器,并完全重新启动了整个集群,一切正常,但平衡器不会运行,因为仍然存在锁,并且我在changelog集合中看到,发生故障的moveChunk只有moveChunk.start条目。我已经查看了日志,我非常确定自从我们重新启动集群以来没有发生迁移。运行MongoDB 2.6.1

  • 如何让平衡器再次运行?我们是否只需删除锁项(从mongos中,使用config、db.locks.remove({u id':'balancer')
  • 我们是否应该关注变更日志条目?我们是否应该删除从未完成的moveChunk.start在变更日志中的条目?我们是否应该插入主mongod记录但丢失的中止条目
显示moveChunk故障的主mongod日志: 2015-10-28800:03:26.616-0400[migrateThread]即将记录元数据事件:{u id:“shard10-2015-10-28T04:03:26-5630490e8d918836ed653d66”,服务器:“shard10”,客户端地址:::27017,时间:新日期(1446005006616),内容:“moveChunk.to”,ns:“prodAB.instru 2015_10_26_IntervalRecord”,详细信息:{min:{appName:“AlertsAccumator”,ts:新日期(1445817600002)},max:{appName:“CES_GI”,ts:new Date(1445830500005)},步骤1/5:1,步骤2/5:0,注意:“中止”} ... 2015-10-28:03:26.616-0400[migrateThread]同步群集连接连接到[spider:43045] 2015-10-28:03:26.617-0400[migrateThread]警告:无法连接到138.12.88.115:43045,原因:错误号:111连接被拒绝 2015-10-28:03:26.617-0400[migrateThread]SyncClusterConnection连接失败:spider:43045错误消息:无法连接到服务器spider:43045(xxx),连接尝试失败 ... 2015-10-28T00:03:26.635-0400[migrateThread]未记录配置更改:shard10-2015-10-28T04:03:26-5630490e8d918836ed653d66无法对服务器spider:43045、spider2:43045、spider3:43045进行身份验证 2015-10-28:03:26.635-0400[migrateThread]错误:迁移失败:调用了waitForReplication,但不再是master 2015-10-28800:03:26.635-0400[migrateThread]警告:不需要忘记挂起的块[{appName:“AlertsAccumator”,ts:新日期(1445817600002)},{appName:“CES_GI”,ts:新日期(1445830500005)}),因为prodAB.Instr_2015_10_26_IntervalRecord的本地元数据已更改

changelog集合中的条目:


为了回答我自己的问题,基于我们在MongoDB 2.6.1集群中所做的工作:

  • 我们通过检查mongos日志和碎片的mongod日志来验证没有发生迁移。我们还检查了正在进行的操作
  • 我们在继续之前备份了群集元数据,请参阅
  • 我们通过从mongos执行以下操作删除了锁:

    use config
    db.locks.remove({'_id': 'balancer'})
    
  • 我们能够用sh.startBalancer()再次启动平衡器

看起来变更日志中的额外条目一点也不重要。我应该注意,我们选择了禁用某些集合的平衡,我们知道这些集合很快将被删除,并且不想在此时承担平衡的额外负担,有关如何禁用特定集合平衡的更多信息,请访问:

use config
db.locks.remove({'_id': 'balancer'})