在我的情况下,我想备份和恢复所有的数据库。听起来很蠢但是-
而不是做
# backup
mongodump # takes time
# restore
mongorestore # takes a lot of time
为什么我不能
# backup
tar -cvzf /backup/mongo.tar.gz /data/db
# restore
tar -xzf /backup/mongo.tar.gz -C /data/db
这样不行吗?
最佳答案
原则上,是的,这是可能的,但有几个注意事项。具有各自向下和向上优势的策略是discussed in detail in the backup documentation。从本质上讲,复制集和分片使过程更加复杂。
您必须关闭或锁定服务器,以便在复制文件时不会写入这些文件。因为复制仍然需要时间,所以只在辅助服务器上进行复制是有意义的,否则您的系统将有效地关闭。
考虑使用文件系统/lvm快照(在文档中也有讨论);它们通常更快,因为文件系统将在以后需要时执行写时复制,因此实际快照只需要毫秒。但是,请确保您了解它在您正在使用的任何lvm、文件系统或虚拟化平台上是如何工作的,性能特征可能是特殊的,特别是在保存多个快照时。
请记住,系统运行时进行的任何备份都是不一致的—获得“干净”备份的唯一方法是优雅地关闭应用程序(以便它完成所有挂起的写入操作,但不接受任何进一步的请求),然后备份数据库。