我正在尝试使用两个节点设置mongodb分片。我启用了3个配置过程和一个路由器进程。我从SQL服务器提取数据(有50列 - 650 MB - _id作为密钥)并放入mongodb。在pentaho配置中,我已启用" 使用所有副本集" 并输入主节点的主机名和端口。当我运行转换时,所有数据都进入主节点而另一个节点没有获取数据。当我输入db.table.getShardDistribution()
时,我收到以下消息" 收藏未分片"。
is.BalancerRunning()
的状态也会给我false
状态。我非常确定后台进程平衡器在这里不起作用。
当我尝试插入样本测试记录10,000条记录,其中名称为关键字时,分片设置工作正常,每个分片都分发了数据。
所以,当我运行pentaho转换来填充mongodb中的数据时,我遗漏了一些东西或做错了什么。任何帮助表示赞赏。
我的设置
C:\ Mongodb \ bin \ mongod.exe --shardsvr --port 10001 --dbpath C:\ Mongodb \ shard1> C:\ MongoDB的\登录\ shard1.log C:\ Mongodb \ bin \ mongod.exe --shardsvr --port 10002 --dbpath C:\ Mongodb \ shard2> C:\ MongoDB的\登录\ shard2.log C:\ Mongodb \ bin \ mongod.exe --configsvr --port 20000 --dbpath C:\ Mongodb \ configdb> C:\ MongoDB的\登录\的config.log C:\ Mongodb \ bin \ mongos.exe --configdb 10.231.34.105: --chunkSize 1> C:\ MongoDB的\ LOG \ mongos.log
mongos>使用管理员 切换到dbadmin
mongos> db.runCommand({addshard:" 10.231.34.105:40001"}); {" shardAdded" :" shard0000"," ok" :1}
mongos> db.runCommand({addshard:" 10.231.34.106:40002"}); {" shardAdded" :" shard0001"," ok" :1}
mongos> db.runCommand({enableharding:" dbTest"}); {" ok" :1}
mongos> db.runCommand({shardcollection:" dbTest.cTest",key:{Date_ID:1}}); {" collectionssharded" :" dbTest.cTest"," ok" :1}
mongos>使用dbTest;
db.cTest.ensureIndex({Date_D:1});
答案 0 :(得分:0)
如果您对数据库和集合进行分片,我不确定您的帖子。
设置分片后,您是否为数据库启用了分片。如下所示
db.runCommand({
enablesharding : "dbname"
});
执行db.stats()
确认。
为集合启用分片后。如下。
db.runCommand({
shardcollection : "collection_name",
key : {
shardKey : "hashed"
}
});
然后确认db.collections.stats()