使用MongoDB 2.6,我设置了四个复制集: a、b、c& d:
a:PRIMARY> rs.conf()
{
"_id" : "name_of_replset",
"version" : 1,
"members" : [
{
"_id" : 0,
"host" : "fedora_cje:port_number"
},
{
"_id" : 1,
"host" : "fedora_cje:port_number"
},
{
"_id" : 2,
"host" : "fedora_cje:port_number"
}
]
}这些复制集已添加到碎片中。
shards:
{ "_id" : "a", "host" : "a/fedora_cje:27000,fedora_cje:27001,fedora_cje:27002" }
{ "_id" : "b", "host" : "b/fedora_cje:27100,fedora_cje:27101,fedora_cje:27102" }
{ "_id" : "c", "host" : "c/fedora_cje:27200,fedora_cje:27201,fedora_cje:27202" }
{ "_id" : "d", "host" : "d/fedora_cje:27300,fedora_cje:27301,fedora_cje:27302" }在sh.status()的底部,我看到了这条消息
{ "_id" : "test", "partitioned" : false, "primary" : "d" }
{ "_id" : "test_collection", "partitioned" : false, "primary" : "d" }但是测试和test_collection并不存在于test_cluster数据库中。
插入记录、第四个复制集和第四个碎片显然被忽略。
test_cluster.test_cluster_collection.stats()
"nchunks" : 3,
"shards" : {
"a" : {...
"b" : {...
"c" : {还请注意,块的数目仍然是3。
我使用默认的/etc/mongod.conf文件。
这是正在使用的insert语句:
>use test_cluster
>t=db.test_cluster.test_sharded_collection
>for( var i=0; i < 20000; i++ ){t.insert( { x:i,y:3,z:"test test" } )}问:为什么第四个复制集,因此第四个碎片在插入过程中被忽略?
发布于 2014-06-15 21:22:13
这里有一些令人困惑的部分,首先列出这段sh.status():
{ "_id" : "test", "partitioned" : false, "primary" : "d" }
{ "_id" : "test_collection", "partitioned" : false, "primary" : "d" }这意味着有一个测试数据库,一个test_collection数据库,而不是集合。它还表明,它们都不是切分的--这就是"partitioned" : false的意思。
然后显示test_cluster.test_cluster_collection.stats()的一些输出,但这不是sh.status命令中的一个数据库。它是一个来自test_cluster数据库的集合,没有任何迹象表明它是如何分割的,尽管它将在sh.status()中列出。从根本上说,这两条信息之间没有任何关系。
您的for循环也将作为test_cluster的子集合插入到test_sharded_collection中。换句话说,您要插入的完整名称空间是test_cluster.test_cluster.test_sharded_collection,我怀疑这不是切分的,这就是为什么您可能看不到块增加的原因。我怀疑您打算做的是插入到test_cluster.test_sharded_collection中。在插入时尝试这样做:
use test_cluster;
for( var i=0; i < 20000; i++ ){db.test_sharded_collection.insert( { x:i,y:3,z:"test test" } )};sh.status()的全部输出,特别是关于test_sharded_collection的部分,将帮助我确认我的怀疑。
https://dba.stackexchange.com/questions/68246
复制相似问题