草庐IT

SHARDING

全部标签

MongoDB 分片未最佳分布

我正在研究一个测试MongoDB实现,我试图将1,000,000条记录批量插入到一个集合中,并让它在两个分片之间均匀分布。我最初的试验看到一个分片包含995760条记录,而另一个分片仅包含4251条记录。我试图预拆分,但这并没有改变任何东西。我是分片概念的新手,非常感谢有关该主题的任何帮助。更新:我在“数字”字段中的分片键是一个整数,范围从1到999,999状态:{"sharded":true,"ns":"test.test_collection","count":999999,"numExtents":21,"size":43982976,"storageSize":21024768

mongodb - 为 mongodb 分片标签定义动态范围

我有一个分片的mongodb数据库设置,我在其中使用分片标签将某些数据限制到某些分片。我想做的是为分片标签提供动态范围。我希望过去5天的数据始终位于一个分片标签中,而其他数据则位于另一个分片标签中。我无法在此处指定固定日期,因为它每天都在变化。一个例子是从过去5天到今天的分片标记“最新”数据从最短到最近5天的分片标记“OLD”数据我如何在分片标签上定义这样的范围而不是每天更改分片标签范围。提前致谢 最佳答案 在您的示例中,使用您的分片键分布,具有“最新”数据的分片将获得所有新写入,因为进一步的“最新”数据将是注入(inject)其中

mongodb - Mongos 计数项目不是真实的?

我在mongos实例中有一个count()函数的奇怪行为。一个多小时前,我更新了帖子集合中的大约8.000个项目,因为我需要将标签对象转换为数组。现在,当我查询mongos时:mongos>db.posts.find({blog:'blog1',tags:{$type:3}}).count()4139mongos>db.posts.findOne({blog:'blog1',tags:{$type:3}})null为什么count()显示4139项并且findOne返回空值,即使RS已同步?编辑:有4个RS(全部同步)。我还对所有PRIMARIES进行了相同的计数查询,结果始终为0。只

MongoDB - 从损坏的碎片中恢复?

当一个分片永久损坏时,如何拯救一个分片的MongoDB集群?我有一个包含48个分片的MongoDB集群。每个分片都是具有一个复制集的主分片。由于计划不周(tm),其中一个盒子用完了文件空间而死了。另一个已经很近了,然后也用完了空间。由于糟糕的情况(可能是当时正在进行的compact()或repairdb()操作,整个分片已损坏。我停止守护进程,尝试修复,但没有成功。那么,问题来了,如何接受一个分片的丢失,同时保留其他好的分片?48个分片,丢失一个分片只占我数据的2%。我可以接受丢失这些数据,但我必须达到正常的健康状态。我该怎么办? 最佳答案

mongodb - 多个 mongodb 服务器被视为一个和数据流管理

对于我的应用程序,我需要定期将旧数据从一个mongodb服务器移动到另一个服务器(即两个不同的服务器)。我还希望能够查询这些数据,就好像它们是同一个数据库。简而言之,我希望能够将两个mongodb实例(在两个不同的服务器上)视为一个实例,并能够控制数据存储的时间和位置。我阅读了有关分片和block的概念,并迅速看到了moveChunk可以轻松完成我想要的功能。问题是在mongodb中似乎无法配置这样的架构。我在这里遗漏了什么吗? 最佳答案 归档删除的文档对于保留已删除文档的问题,您无法通过分片或复制等内置功能/机制来实现。唯一的方法

mongodb - 如何使用 Sharding 查看 Mongodb 中的 Oplog

我查看了说明操作日志是本地数据库上存储的集合的文档。当我尝试在使用本地之后显示集合时,我收到错误“无法通过mongos使用‘本地’数据库。错误代码:13644。这似乎是相关的进行分片。我正在尝试查看oplog以查看当我插入特定文档时它到底说了什么。 最佳答案 分片路由器(mongos)不包含任何数据,因此没有操作日志。连接到接收插入的分片上的主节点。oplog是local.oplog.rs集合。 关于mongodb-如何使用Sharding查看Mongodb中的Oplog,我们在Stac

mongodb - 所有数据仅存储在 MongoDB 分片集群中的单个分片中

我创建了一个MongoDB自动分片集群,它有3个分片服务器(没有复制)、1个配置服务器和1个Mongos实例。这是sh.status()的输出。mongos>sh.status()---ShardingStatus---shardingversion:{"_id":1,"minCompatibleVersion":5,"currentVersion":6,"clusterId":ObjectId("56ffa36ab327ae2bee8fe804")}shards:{"_id":"shard0000","host":"172.18.109.46:27018"}{"_id":"shard

MongoDB 错误 : moveChunk failed to engage TO-shard in the data transfer: cannot start recv'ing chunk

我在我的mongodb变更日志集合中看到以下错误。{"_id":"ip-xxx-xx-xx-xx-2016-05-04T06:31:55-5729975b16a41fe4f4618182","server":"ip-xxx-xx-xx-xx","clientAddr":"xxx.xx.xx.x:36339","time":ISODate("2016-05-04T06:31:55.754Z"),"what":"moveChunk.from","ns":"my_db.my_collection","details":{"min":{"my_shard_key":{"$minKey":1}}

mongodb - Mongo 分片不删除源分片中分片集合的数据

我在5台机器上安装了MongoDB3.2.6,它们都形成了由2个分片组成的分片集群(每个都是具有主要-次要-仲裁器配置的副本集)。我还有一个包含非常大集合(约5000万条记录,200GB)的数据库,它是通过mongos导入的,与其他集合一起放入主分片。我在该集合上生成了散列ID,这将是我的分片键。之后我将集合分片为:>useadmin>db.runCommand({enablesharding:"my-database"})>usemy-database>sh.shardCollection("my-database.my-collection",{"_id":"hashed"})命令

mongodb - Mongo $currentDate 是否受时钟漂移影响?

我有一个分片和复制的MongoDB集群,我想知道当我使用$currentDate时,MongoDB是否会同步服务器之间的当前时间,或者我是否会遇到明显的时钟漂移? 最佳答案 系统时钟同步绝对不在MongoDB服务器的职责范围内。$currentDate将在更新文档时从服务器的角度反射(reflect)当前时间,因此如果分片之间存在显着差异,则分片集群中的时钟漂移将对$currentDate值产生影响。如果您正在运行任何多服务器部署,您应该始终使用时钟同步服务(例如NTP)以避免潜在的时钟漂移。通常,对时间进行小的增量调整的服务(例如