mongorestore 需要很多时间,我只是复制粘贴“/data/db”目录怎么样?
mongorestore takes a lot of time, how about I just copy-paste the '/data/db' directory?
就我而言,我想备份和恢复所有数据库。这听起来可能很愚蠢,但是 -
而不是做
# 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、文件系统或虚拟化平台上工作的,性能特征可能很奇特,尤其是在保留多个快照时。
请记住,在系统 运行 时进行的任何备份都是不一致的 - 获得 'clean' 备份的唯一方法是优雅地关闭应用程序(这样它就完成了所有挂起的写入但不接受任何进一步的请求),然后备份数据库。
就我而言,我想备份和恢复所有数据库。这听起来可能很愚蠢,但是 -
而不是做
# 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、文件系统或虚拟化平台上工作的,性能特征可能很奇特,尤其是在保留多个快照时。
请记住,在系统 运行 时进行的任何备份都是不一致的 - 获得 'clean' 备份的唯一方法是优雅地关闭应用程序(这样它就完成了所有挂起的写入但不接受任何进一步的请求),然后备份数据库。