在阅读mongodump文档时,我发现了这些信息。 " mongodump仅在其备份数据中捕获数据库中的文档,不包括索引数据。然后mongorestore或mongod必须在恢复数据后重建索引。"
考虑到索引也是数据库难题的关键部分,并且需要重建它们,为什么mongodump可以选择使用索引进行备份?
我认为将备份索引作为默认选项有两个优点: 1.我们节省了备份和恢复索引所需的时间。 2.我们节省了存储备份所需的空间。
但为什么不把它作为一种选择?
答案 0 :(得分:7)
mongodump
从MongoDB数据库(BSON格式)创建数据的二进制导出。索引 definitions 在<dbname>.metadata.json
个文件中备份,因此mongorestore
可以重新创建原始数据&amp;索引。
有两个主要原因导致无法使用mongodump
备份实际索引:
索引指向数据文件中的位置。如果仅导出数据文件中的文档(而不是获取数据文件的完整文件副本),则数据文件不存在。
磁盘上的索引格式是特定于存储引擎的,而mongodump
旨在独立于存储引擎。
如果您想要完整的数据备份和索引,您需要backup by copying the underlying data files(通常使用文件系统或EBS快照)。对于大型部署,这是一个更常见的选项,因为mongodump
需要将所有数据读入mongod
进程(如果您的数据库大于内存,则会占用您的一些工作集)。