草庐IT

mongodb - 分片与 mongoDB 中的分布式数据库相同吗?

关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion我想将mongodb实现为分布式数据库,但我找不到很好的教程。每当我在mongodb中搜索分布式数据库时,它都会给我分片链接,所以我很困惑它们是否是相同的东西? 最佳答案 一般来说,如果您有一个读取繁重的系统,您可能希望使用replication.这是1个primary,最多有50个secondaries。secondaries分担读取压力,而pri

mongodb - 默认范围分片键 mongodb

我有一个带有2个分片(比如说A和B)的mongodb分片,每个分片有17GB可用空间。我将包含对象ID的_id设置为分片键。以下是用于设置db和collection的命令。sh.enableSharding("testShard");sh.shardCollection("testShard.shardedCollection",{_id:1});然后我尝试向mongos服务器发起4,000,000个插入查询。我执行脚本低于4次。for(vari=0;i使用_id作为分片键,据我了解,4000000个文档将适合1个分片,所有插入将仅发生在A分片中。但是,结果并不像我预期的那样,在A分片

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