如何扩展MongoDB?

Ter*_*ang 10 scalability amazon-ec2 amazon-ebs mongodb amazon-web-services

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

我目前正在使用EC2和EBS.如您所知,我必须为固定大小分配EBS.

如果MongoDB增长大于EBS规模怎么办?我是否必须创建更大的EBS并复制和粘贴文件?

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

Gat*_* VP 9

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

有几种方法可以迁移数据,这实际上取决于您需要的正常运行时间类型.当然,第一步涉及捆绑机器和创建新卷.

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

您可以将数据库完全脱机几分钟吗?

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

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

您可以将数据库脱机几分钟吗?

如果是这样,执行此操作(从属和切换):

  1. 启动新实例并在该服务器上安装新EBS.
  2. 安装/启动mongod作为指向当前数据库的--slave.(你可能需要重新启动当前的--master)
  3. 奴隶将进行新的同步.一旦奴隶是最新的,你将进行"切换"(后续步骤).
  4. 关闭系统写入.
  5. 关闭原来的mongod进程.
  6. 重新启动"新"mongod作为主人而不是奴隶.
  7. 重新激活指向新主服务器的系统写入.

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

你能负担不起任何停机时间吗?

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

  1. 启动新实例并在该服务器上安装新EBS.
  2. 安装/启动mongod作为当前数据库的主服务器和从服务器.(可能需要重新启动当前为主,最小停机时间?)
  3. 新计算机应该进行全新的同步.
  4. 一旦新计算机处于最新状态,请将系统切换到指向新服务器的位置.

我知道看起来这个最后一个版本实际上是最好的,但它可能有点冒险(截至本文撰写时).原因很简单,我确实在"Master-Master"复制方面遇到了很多问题,特别是如果你不从两个主动开始.

如果您计划使用此方法,我强烈建议先进行较小的练习.如果有什么炸弹在这里,Mongo可能只是擦除你的所有数据文件,这将有更多的东西.

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


Tho*_*oll 3

EBS 中的E不是代表“弹性”,意思是“动态调整大小”吗?

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

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