【问题标题】:How to scale MongoDB?如何扩展 MongoDB?
【发布时间】:2011-02-17 15:23:24
【问题描述】:

我知道 MongoDB 可以垂直扩展。如果我的磁盘用完了怎么办?

我目前正在将 EC2 与 EBS 一起使用。如您所知,我必须为 EBS 分配固定大小。

如果 MongoDB 的增长大于 EBS 大小怎么办?我必须创建一个更大的 EBS 并复制和粘贴文件吗?

或者我们应该启动更多的 MongoDB 实例并且每个连接到不同的 EBS 磁盘?在这种情况下,我可以为不同的数据库连接到不同的实例。

【问题讨论】:

  • 这个问题是否被认为已回答。几个月过去了,你还没有检查过任何东西。

标签: mongodb amazon-ec2 amazon-web-services scalability amazon-ebs


【解决方案1】:

好吧,我现在正在使用 Mongo DB。我对它产生的性能感到非常惊讶,尤其是在一些简单的排序上。

我相信它是用于简单 Web 应用程序逻辑的好工具。剩下的问题是如何扩展和备份。我会继续探索。

我唯一的缺点是我没有任何好的工具来显示其中存储的数据。例如,我也想将我的日志记录从 MYSQL 放到 Mongo 中。但是,我很难查看日志。以前,我可以使用 MYSQL 查询轻松获取我想要的内容。

无论如何,它是一个很好的工具,我会继续使用它。

【讨论】:

    【解决方案2】:

    如果你的磁盘用完了,你显然需要一个更大的磁盘。

    迁移数据的方法有多种,具体取决于您需要的正常运行时间类型。第一步当然是捆绑机器和创建新卷。

    这些提示从最简单到最难。

    你能让数据库完全离线几分钟吗?

    如果是这样,请执行此操作(通过复制迁移):

    1. 在服务器上挂载新的 EBS。
    2. 阻止您的应用连接到 Mongo。
    3. 关闭 mongod 并等待所有内容写入(检查日志)
    4. 将所有数据文件(可能还有日志)复制到新的 EBS 卷。
    5. 在复制过程中,更新您的 mongod 启动脚本(或配置文件)以指向新卷。
    6. 启动 mongod 并检查连接
    7. 重新启动您的应用。

    你可以让数据库离线几分钟吗?

    如果是这样,请执行此操作(slaving 并切换):

    1. 启动一个新实例并在该服务器上装载新的 EBS。
    2. 安装/启动 mongod 作为 --slave 指向当前数据库。 (您可能需要以 --master 身份重新启动当前)
    3. 从站将执行新的同步。从属设备更新后,您将执行“切换”(下一步)。
    4. 关闭系统写入。
    5. 关闭原来的 mongod 进程。
    6. 重新启动“新”mongod 作为 master 而不是 slave。
    7. 重新激活指向新主节点的系统写入。

    正确完成最后三个步骤可以在几分钟甚至几秒钟内完成。

    您不能承受任何停机时间吗?

    如果是这样,请执行此操作 (master-master):

    1. 启动一个新实例并在该服务器上装载新的 EBS。
    2. 针对当前数据库安装/启动 mongod 作为 master 和 slave。 (可能需要重新启动当前作为主机,最短的停机时间?)
    3. 新计算机应该重新同步。
    4. 新计算机更新后,将系统切换为指向新服务器。

    我知道最后一个版本似乎实际上是最好的,但它可能有点冒险(在撰写本文时)。原因很简单,老实说,我在“Master-Master”复制方面遇到了很多问题,尤其是如果你没有从两个都激活开始。

    如果您打算使用此方法,我强烈建议您先进行较小的练习。如果这里发生了爆炸,Mongo 可能会简单地擦除您的所有数据文件,这将产生删除更多内容的效果。

    如果你得到一个好的版本,请发布命令,我想看看它的实际效果。

    【讨论】:

      【解决方案3】:

      您可以将较大的磁盘从较小的磁盘上从属,直到它赶上为止

      fsync+lock 并拍摄文件系统快照并将其复制到更大的磁盘上。

      【讨论】:

        【解决方案4】:

        EBS 中的 E 不是代表 elastic 的意思吗?比如动态调整大小?

        目前,MongoDB 团队正在努力完成分片,这将允许您通过在不同服务器上单独分区数据来进行水平扩展。给它一两个月,它会正常工作的。开发人员非常善于信守承诺。

        http://api.mongodb.org/wiki/current/Sharding%20Introduction.html http://api.mongodb.org/wiki/current/Sharding%20Limits.html

        【讨论】:

        • 表示感谢。顺便说一下,在将 EBS 卷安装到服务器之前,您已经为其分配了一个大小。创建磁盘后,您无法调整其大小。
        • @terence410,我想知道为什么它几乎是固定的,为什么要称为弹性块存储。
        • @MirceaChirea 它具有弹性,因为您可以在需要时轻松创建新卷以满足您的需求。
        猜你喜欢
        • 1970-01-01
        • 2019-07-01
        • 2015-09-01
        • 2016-09-05
        • 2019-11-11
        • 2020-01-03
        • 1970-01-01
        • 1970-01-01
        • 2016-12-14
        相关资源
        最近更新 更多