草庐IT

分片键

全部标签

mongodb - 在单个服务器中运行多个 MongoDB 分片有什么好处/缺陷吗?

我目前正在运行具有大约90GB数据的传统MySQL主/从设置。我们的应用程序的流量正在迅速增加,而且这种设置已经显示出放缓的迹象。我非常想试用MongoDB,而且我对自动分片功能感到特别兴奋。但是,我目前只有2台(专用)数据库服务器可供我使用,其中一个肯定必须用于复制。所以这是我的问题:如果我在同一台服务器上将多个MongoDB实例作为分片运行,我真的会从拥有更小的分片数据集中获益吗?还是会因为负载/内存需求增加而导致性能下降? 最佳答案 MongoDB的KristinaChodorow有一个seriesofblogpostsabo

mongodb - 删除无法访问的 Mongo 分片

我有3个分片的MongoDB分片设置:shard0000、shard0001和shard0002。运行shard0002的机器现在宕机了,这导致我所有的查询都失败了。我想暂时从我的设置中删除shard0002并继续使用前两个分片。假设我只使用位于前两个分片中的非分片集合,这应该是可行的,对吧?我首先尝试的是:db.runCommand({removeshard:'IP:PORT'})这显然没有帮助,因为它只是将分片置于排空模式,这永远不会结束(因为它已经关闭)。然后我尝试连接到我的配置服务器并在配置数据库上执行db.shards.remove({_id:'shard0002'})然后重

MongoDB:出现新分片,但不显示内容。这是预期的吗?

我有一个带有2个分片RS1和RS2的Mongo集群。RS1约600G(*),RS2约460G。几分钟前,我添加了一个新的分片RS3。当我连接到mongos并检查状态时,我看到的是:mongos>db.printShardingStatus()---ShardingStatus---shardingversion:{"_id":1,"version":3}shards:{"_id":"RS1","host":"RS1/dbs1d1:27018"}{"_id":"RS2","host":"RS2/dbs1d2:27018"}{"_id":"RS3","host":"RS3/dbs3a:27

mongodb - 在 MongoDB 中正确实现散列分片键

我有一个当前由内置“_id”(ObjectId)索引/查询的集合。我不想在这个键上分片,因为它是顺序的(以日期为前缀)。Mongo2.4的文档说我可以对这个键的哈希进行分片,这听起来很棒。像这样:sh.shardCollection("records.active",{_id:"hashed"})问题:我是否必须首先在事件集合上创建散列索引:db.active.ensureIndex({_id:"hashed"})或者这不是必需的吗?我不想在不必要的索引上浪费空间。相关问题:如果我确实使用ensureIndex({_id:"hashed"})创建了一个散列索引,我可以删除默认的“id”

linux - mongos 的初始化脚本和 MongoDB 分片的配置服务器

我在本地环境中创建了一个分片用于测试目的。我在一台机器上有三个配置服务器,在同一台机器上有一个查询路由器,在两台不同的机器上有两个数据节点。一切正常,但我的问题是我无法让所有进程在不同端口上运行,因为我没有任何启动/停止脚本。我最后使用&在命令行上运行进程以使其处于事件状态,这是保持进程处于事件状态的非常糟糕的方式,有时它会自动死亡。请帮助或提供一种使用脚本的方法,并且脚本可以处理各种端口以激活单机上的所有进程。 最佳答案 您永远不应该希望从一个初始化脚本驱动多个实例,因为当您启动/关闭任何一个实例时,这会产生大量额外的管理工作。您

Mongodb分片: Chunk split failed with Hashed Shard Key

我正在尝试使用散列分片键:{group_id:"hashed"}拆分mongodb分片集群中的几个巨型block。我使用mongodb文档中的以下命令来拆分这些巨型block:db.runCommand({split:"test.people",bounds:[{group_id:NumberLong("-5838464104018346494")},{group_id:NumberLong("-5557153028469814163")}]})但出现以下错误:{"cause":{},"ok":0,"errmsg":"splitfailed"}.此故障的可能原因是什么?分片键group

ruby-on-rails - 在 mongo 分片环境中排序会降低性能

我有一个执行类似这样的查询,last_shipment_id=OrderDelivery.where(platform:'business').desc(:shipment_id).limit(1).pluck(:shipment_id)[0]当我在暂存机中没有分片环境的情况下使用{platform:1,shipping_id:-1}正确索引时,它只需要1~5ms就可以很好地工作但是,我们的生产设置了4个shardingmongodb,结果在1000~3000ms结束。有谁知道这是怎么发生的或者如何解决这个案子?我已阅读有关此幻灯片的内容https://www.slideshare.n

mongodb - 无法在 mongodb 上对集合进行分片

我在mongo上有一个包含2个集合(c1和c2)的数据库(“mydb”)。c1已经被哈希分片。我想以同样的方式分割第二个集合。我收到以下错误:usemydbsh.shardCollection("mydb.c2",{"LOG_DATE":"hashed"}){"proposedKey":{"LOG_DATE":"hashed"},"curIndexes":[{"v":1,"key":{"_id":1},"ns":"mydb.c1","name":"_id_"}],"ok":0,"errmsg":"pleasecreateanindexthatstartswiththeshardkeyb

mongodb - 如何在 Mongo 中为每个分片定义分片范围?

比方说,文件是{x:Number}我有3个碎片。不是自动分片,我可以具体定义shard1只包含数据x 最佳答案 你可以。可以手动预分割block,如下所述:http://www.mongodb.org/display/DOCS/Splitting+Chunks仔细考虑如何拆分数据block。如果你做得不好,你可能会遇到很多性能问题,但如果你对你的key有足够的了解,你会收获很多。如果你这样做了,你可能想关闭平衡器:>useconfig>db.settings.update({_id:"balancer"},{$set:{stoppe

java - 分片后MongoDB插入速度变慢

我有一个Mongodb集群,其中包含一个主副本和一个辅助副本作为复制集一起运行。但随着流量的增长,我决定执行分片以获得更快的写入速度。我根据tutorial对“_id”列执行了散列分片。并将数据分成两个分片。然后我进行了一些基准测试,发现在某些情况下,分片集群甚至比非分片集群还要慢。这是测试结果。最大吞吐量测试:使用十台机器同时运行“mongoimport”将数据加载到目标db,以测试db的最大写入速度。结果:分片集群可以插入39500个文档/秒。非分片集群可以插入27400个文档/秒。单实例mongoimport测试:仅使用一台机器运行“mongoimport”将数据加载到目标数据库