Mongo终止构建索引

本文讲述了MongoDB在创建或重构索引时可能导致的数据库阻塞问题,如何通过`--noIndexBuildRetry`选项解决启动失败,并详细介绍了定位和终止索引进程的方法。重点在于处理集群启动问题及索引管理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB在执行createIndex或reIndex方法在创建或重构索引时,将阻塞对数据集合的操作,更为严重的是,对整个数据库都有影响,直到索引创建或重构完成,方可操作。

如在其过程中意外中断,再次重启mongodb时会发现,无法启动,查看monggo日志发现:

如图,启动不起来是因为mongo在后台创建索引未曾执行完毕。针对此问题,可以使用storage.indexBuildRetry or --noIndexBuildRetry跳过索引创建来启动。

如:我采用的是mongo集群,日志中只要是分片10中表在创建索引导致分片10无法顺利启动,最简单的办法就是在启动分片10时增加 --noIndexBuildRetry跳过索引创建来启动:

numactl --interleave=all mongod -f /data4/mongodb7010/conf/shard7010.conf --noIndexBuildRetry

如下图:

启动完成后,进入相应数据库连接主节点,定位创建(重构)索引的进程:

db.currentOp()

然后执行:

db.killOp(<opid>) 

终止索引创建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值