将分片数据合并到MongoDB中的单个持久数据库中

时间:2013-10-22 14:01:10

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

我们拥有可在短时间内生成大量数据的软件,并存储在单个MongoDB数据库中。为了提高写入性能,我们正在研究设置分片集群来处理传入数据。因为这一切都是在amazon ec2实例上完成的,所以我们宁愿在完成整个过程后将我们的数据从分片集群整合到单个持久性服务器以节省成本。显然我们可以编写一个python脚本,在完成后将数据从群集中移出,但我希望有一个更干净,更自动化的方法。写入数据后,访问权限全部为只读,单个服务器可以充分处理工作负载。我正在寻找一些结合副本集和分片的解决方案,但这似乎不是那些工作的方式。关于如何最好地实现这种架构的任何建议?

1 个答案:

答案 0 :(得分:1)

以零停机时间迁移MongoDB的一种方法是创建一个由旧服务器和新服务器组成的副本集,并在新服务器同步后立即删除旧服务器。但是,当旧数据库被分片并且新数据库不是分片时,这不起作用,因为分片是从副本集构建的,而不是相反。这意味着您必须以传统方式复制数据库。有两种方法可以做到这一点:

  1. 网络方法:使用目标上的db.copyDatabase(<remote_db_name>, <local_db_name>, <remote_host>, <remote_username>, <remote_password>) 命令通过网络从源复制数据库。
  2. 文件方法:在源上执行mongodump以将数据导出到文件。然后在新服务器上执行mongorestore以导入它。