【问题标题】:MongoDb preparing for Sharded ClustersMongoDb 为 Sharded Clusters 做准备
【发布时间】:2017-06-24 23:29:09
【问题描述】:

我们目前正在为生产设置 mongodb 环境。目前我们只有一个专用的 mongodb 数据库服务器。我们将在不久的将来通过第二台服务器扩展它,我已经向管理层表示,在理想情况下,我们也应该获得第三台服务器。

因为我已经知道我们将在不久的将来使用分片和复制,所以我想为此做好准备。

我现在的想法是从开发配置开始(正如 mongo 的文档所命名的那样)。

每当我们的第二个服务器可用时,我想将此设置扩展为具有 2 个配置服务器和 2 个分片(副本集)的配置。

当然,当我们的第三台服务器可用时,它具有功能齐全的分片集群配置。

在阅读 mongo 的文档时,我被一条注释触发,即不应在生产中使用 de Development 设置。

MongoDb Development Configuration

请记住,我们将很快添加更多服务器,是否已经配置了开发配置以便我们可以在第二台服务器可用时轻松地将其添加到集群中?

【问题讨论】:

标签: mongodb configuration cluster-computing replication sharding


【解决方案1】:

设置“开发分片设置”后,我找到了我的 anwser。当然,我很乐意分享,以防有人在开始时遇到与我相同的问题。

在我的情况下,可以从开发设置开始,直到我的新服务器到达。这是一种临时情况,当我的新服务器到来时,我能够轻松地扩展我的副本集。不建议将其用于生产的原因有很多:

很明显,还没有复制。由于我在一台机器上运行分片,因此存在单点故障。如果机器或一个节点出现故障,集群将不再工作。

现在这部分很有趣。添加第二台服务器后,我确实有主节点和辅助节点。主节点用于写入,辅助节点用于读取。我已经消除了没有复制并且我的数据具有更高可用性的问题。但是,我注意到对于 2 成员副本集,如果副本集的一个成员出现故障(即使这是辅助节点),主节点也会降级到辅助节点。这与 MongoDb 使用的投票机制有关。 See Markus' more detailed answer on this.。由于副本集中没有更多的主节点,我的集群将不再运行。现在,如果我要使用仲裁器,我也可以消除这个问题。

当您拥有一个 3 成员副本集时,自动故障转移就会启动。每当一个节点出现故障时,都会自动分配另一个主节点,并且集群将继续像以前一样运行。

在我的测试过程中,我的一个 MongoD.exe 实例由于“内存不足异常”而停止工作。我正在运行一个包含 3 个副本集的集群,这意味着每台机器至少有 4 个 mongod.exe 进程在运行(3 个用于副本集碎片,一个用于配置服务器副本集)。除了有一个尚未优化的查询外,我还注意到WiredTiger storage engine by default can use up to 50% of ram minus one gigabyte.也许在一台机器上拥有多个副本集分片并不是最好的选择,但我能够通过限制wiredtiger内存使用来消除这个问题。

我希望这个答案可以帮助任何开始为 MongoDb 设置复制和分片的人。

【讨论】:

    猜你喜欢
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 2014-11-23
    • 2019-11-07
    相关资源
    最近更新 更多