滚动构建索引每次最多取出一个复制集成员,从辅助成员开始,并在该成员上以standalone方构建索引。滚动索引构建至少需要一次副本集选举。
考虑点
1.唯一性索引
使用滚动方式构建唯一性索引,你必须停止集合上所有写操作。否则,只能在主节点上使用db.collection.createIndex()创建。
2.oplog大小
确保oplog足够大,从而能完全接收索引创建期间收到的日志数据,从而才能追赶上主节点。
先决条件
对于创建唯一性索引,要停止在集合上的所有写操作。
创建过程
1.关闭一个辅助节点,以standalone的模式重启
如果使用的是配置文件:
·注释掉集群名称配置
·修改成其它的端口
·disableLogicalSessionCacheRefresh参数设置成true
net: bindIp: localhost,<hostname(s)|ip address(es)> port: 27217 # port: 27017 #replication: # replSetName: myRepl setParameter: disableLogicalSessionCacheRefresh: true
如果是命令行的方式:
mongod --port 27217 --setParameter disableLogicalSessionCacheRefresh=true
2.创建索引
通过新的端口连接进来,创建索引。比如:
db.records.createIndex( { username: 1 } )
3.以复制集成员的方式重启mongodb实例
将步骤1中的操作去掉,然后重启。
一定要移除disableLogicalSessionCacheRefresh。
4.在其它辅助节点上,重复步骤1-3
5.在主节点上创建索引
执行rs.stepDown() ,将主节点降级。然后重复步骤1-3
至此,滚动构建索引结束。
标签:滚动,创建,disableLogicalSessionCacheRefresh,索引,构建,MongoDB,节点 From: https://www.cnblogs.com/abclife/p/17306738.html