开发同事说应用里面mongodb写入报错,自己进服务器查看,报错信息如下:
[mongodb@azure_d1_dbm1_3_11 ~]$ /usr/local/mongodb-linux-x86_64-3.0.3/bin/mongo localhost:30000/admin
MongoDB shell version: 3.0.3
connecting to: localhost:30000/admin
mongos> 
mongos> db.foo_test.insert({x:1});
2016-06-22T17:26:17.427+0800 E QUERY    Error: Error: error: {
"$err" : "error creating initial database config information :: caused by :: can't find a shard to put new db on",
"code" : 10185
}
    at Error (<anonymous>)
    at DBCollection.insert (src/mongo/shell/collection.js:260:23)
    at (shell):1:13 at src/mongo/shell/collection.js:260
mongos> 




查看集群状态
[mongodb@azure_d1_dbm1_3_11 ~]$ /usr/local/mongodb-linux-x86_64-3.0.3/bin/mongo localhost:30000/admin
MongoDB shell version: 3.0.3
connecting to: localhost:30000/admin
mongos> db.runCommand({listshards : 1 });
{ "shards" : [ ], "ok" : 1 }
mongos> 


看到这里发现集群里面没有成员,所以尝试手动添加成员试试:
mongos> 
mongos> db.runCommand( { addshard : "shard1/10.249.3.11:27017,10.249.3.12:27017,10.249.3.11:27037"});
{
"ok" : 0,
"errmsg" : "mongos specified a different config database string : stored : 10.249.3.12:20000,10.249.3.11:20000,10.249.3.11:20003 vs given : 10.249.3.12:20000,10.249.3.11:20000,10.249.3.11:20002"
}
mongos> 


看到添加失败,添加的配置和原来的config配置不符合,只能说明是在部署后,config混乱了或者部署失败了。所以最快的解决方案就是:
(1)先导出所有数据
(2)重新启动,搭建mongodb shareding
(3)然后再导入备份好的数据

Logo

更多推荐