我们有软件可以在短时间内生成大量数据,并存储在单个 MongoDB 数据库中。为了提高写入性能,我们正在考虑建立一个分片集群来处理传入的数据。因为这一切都是在亚马逊 ec2 实例上完成的,所以我们希望在完成该过程后将我们的数据从分片集群整合到单个持久服务器以节省成本。显然,我们可以编写一个 python 脚本,在完成后将数据从集群中移出,但我希望有一种更清洁、更自动化的方法。写入数据后,访问全部为只读,单个服务器可以充分处理工作负载。我一直在寻找一些结合副本集和分片的解决方案,但这似乎不是那些工作的方式。
问问题
142 次
1 回答
1
以零停机时间迁移 MongoDB 的一种方法是创建一个由旧服务器和新服务器组成的副本集,并在新服务器同步后立即删除旧服务器。但是,当旧数据库被分片而新数据库没有被分片时,这不起作用,因为分片是从副本集构建的,而不是相反。这意味着您必须以老式方式复制数据库。有两种方法可以做到这一点:
- 网络方法:使用
db.copyDatabase(<remote_db_name>, <local_db_name>, <remote_host>, <remote_username>, <remote_password>)
目标上的命令通过网络从源复制数据库。 - 文件方法:
mongodump
在源上做一个将数据导出到文件中。然后mongorestore
在新服务器上做一个导入它。
于 2013-10-22T15:01:46.320 回答