对生产mongo数据库运行db.copyDatabase()有什么性能影响?

Jed*_*son 1 mongodb mlab

我最近推出了一个尚未看到很多生产规模的网络应用程序,但我希望(希望;)它将在不久的将来.

我发现能够使用db.copyDatabase()非常有用的功能将当前生产系统的快照复制到开发中,并且我想知道随着生产数据库的增长/处于更重的负载下,我可能会遇到什么样的问题.

文档似乎并不表示该命令正在阻塞(特别是如果在命令运行时将数据添加到任一数据库,则会引发数据集变得不同步).

由于数据库被复制到开发(或登台)服务器,因此重建索引/等所花费的时间不会是一个大问题(至少有一段时间).

在这种情况下,文档对指南有点了解,所以我希望得到以下建议:

  • 是否适合运行db.copyDatabase 生产中的实时数据库进行复制?
  • 源数据库是否有性能损失?
  • 它停止可行的规模是否存在实际限制?(根据这个问题,这个限制看起来会非常大)

作为参考,应用程序和数据库是单独托管的(heroku/mongolab).我也在命令db.dropDatabase()之前在本地运行copyDatabase()以获得一个完全新的数据库.

ang*_*ela 7

不确定您是否知道,但您可以通过MongoLab的Web界面安排一次性或定期备份.这些备份可以转到您自己的自定义云存储容器(例如Amazon S3),也可以选择让MongoLab将其存储在其云存储容器中.

这些备份是二进制转储(通过MongoDB的mongodump工具获取),您可以直接从MongoLab的UI下载它们.

我们在共享实例上复制所有数据库,并尽一切努力从辅助数据库中删除备份,以最大限度地减少对主数据库的负载(备份可能非常耗费资源).

希望有所帮助.