MongoDB Shard离线mongos抛出套接字异常

时间:2015-09-21 13:55:37

标签: mongodb sharding

我对使用Shard使用mongos有疑问,我在开发环境中构建了分片集群 我有两个分片(不包括仅用于测试的replset)一个配置和一个mongos 当我关闭一个分片时,mongos无法找到数据(例如find(),count()...)。它会抛出一个套接字异常 像这样: 127.0.0.1:20000的套接字异常[CONNECT_ERROR] 代码:11002 任何人都可以帮我弄清楚问题出在哪里,我看到之前在分片集群中写过的文档如果一个碎片崩溃了mongos仍然可以工作。 我感谢你的帮助,我使用这些shell来构建它

shard 1
mongod --shardsvr  --port 10000 --dbpath c:\shard\data\shard1\r0 --oplogSize         64 --logpath c:\shard\logs\r0.log --logappend  

shard2
mongod --shardsvr  --port 20000 --dbpath     c:\shard\data\shard2\r0 --oplogSize 64 --logpath c:\shard\logs\r3.log --logappend  

config
mongod --configsvr --dbpath c:\shard\data\config --port 40000 --logpath     c:\shard\logs\config.log --logappend  

mongos
mongos --configdb 127.0.0.1:40000 --port 50000 --chunkSize 1 --logpath     c:\shard\logs\mongos.log --logappend 


mongo 127.0.0.1:50000/admin  
db.runCommand({addshard:"127.0.0.1:10000",name:"ShardSetA"})  
db.runCommand({addshard:"127.0.0.1:20000",name:"ShardSetB"})  
db.runCommand({enablesharding:"Staff"});  
var server=["127.0.0.1:10000","127.0.0.1:20000"]
db.runCommand({shardcollection:"Staff.StaffInfo",key:{StaffName:1}})  

for ( var x=65; x<=65+25; x+=10 ){
var index=x+10>65+25?65+25:x+10;
 db.runCommand( { split : "Staff.StaffInfo" , middle : { StaffName:      String.fromCharCode(index)} } );} 

var i=0;
for ( var x=65; x<=97+25; x+=10 ){db.adminCommand( {moveChunk :    "Staff.StaffInfo" ,find : {StaffName: x},  to : server[i%2] });i++} 

1 个答案:

答案 0 :(得分:0)

我解决了这个问题 这个问题有三种情况 1.从普通分片查询,mongodb可以提供正确的数据 2.来自所有分片的查询(包括离线分片)mongodb将抛出异常 3.来自离线shard mongodb wiil抛出异常的查询

所以如果你想保持高性能分片,请使用replset! 如果您从其他dirvers查询,请设置部分标志以提供来自普通分片的返回数据

相关问题