10

目前我们运行一个包含 2 个服务器 + 1 个仲裁器的 MongoDB 副本集。

我们在副本集的数据库中存储了大约 150 GB 的数据。

现在我们正在考虑什么时候开始分片。因为我们想知道是否有一个点你不能再开始分片了。

很明显,我们必须在硬盘空间用完、cpu 过载或由于 RAM 太少而导致整体性能下降之前开始分片。

有人还告诉我,有 256 GB 数据大小的限制,在此之后您将无法再开始分片。我还阅读了官方文档http://docs.mongodb.org/manual/sharding/和“MongoDB 权威指南”,我无法证明这一点。

根据您的经验,您应该从分片开始有限制吗?

4

2 回答 2

12

当你达到大约 60-70% 的资源利用率时,我会开始分片。这可能是硬盘空间和 RAM。确实存在 256 GB 的限制,记录在http://docs.mongodb.org/manual/reference/limits/#Sharding%20Existing%20Collection%20Data%20Size

于 2013-07-23T12:45:25.560 回答
9

我发现限制基于读/写;毕竟分片是关于增加容量,主要是写入,而副本集更关心读取。但是,对数据范围(片键)使用单独的服务器(节点)也可以帮助读取,因此它确实对两者都有连锁反应。

例如,您当前的工作集可能只使用了当前服务器内存的 40%,但是由于发送到该单个服务器的写入量,您实际上可能会看到由于 IO 导致的速度问题。这时你会考虑分片。

所以我个人会说,这个问题很大程度上基于意见,当你觉得你需要更多的操作容量而不是单个副本集的成本效益时,你应该分片。

我知道单副本设置通常可以占用整个集群,但这取决于您的预算有多大。随着计算机变得越来越大,它变得越来越昂贵。

于 2013-07-23T12:54:58.683 回答