2017-06-15 50 views
1

我的客户使用mongoDB 2.4,由于这个版本有一些限制,我们给了他们升级到最新稳定mongoDB 3.4.5的选项。哪一个是Mongodump VS Mongoexport用于升级mongoDB数据库的首选?

在MongoDB中使用 mongodump的初始测试2.4 和Mongodb中的mongorestore 3.4.5工作正常,因为我可以看到所有导入的集合。

从文档mongorestore它没有提到任何地方它可以恢复从旧版本的mongoDB转储。

由于我们无法使用mongorestore,我可以使用“mongoexport”导出旧版mongoDB 2.4的csv/json格式的数据,并导入到更新版本的mongoDB 3.4吗?

使用“mongoexport/mongoimport”而不是“mongodump”升级到更新版本的mongoDB 3.4可能会出现什么问题?

注:我会完全删除MongoDB中的旧版本,将安装的MongoDB

回答

4

Mongodump和Mongorestore更好,因为:

  1. 他们跑得更快
  2. 他们保存一些数据格式优于mongoexport和mongoimport,因为数据不是从BSON翻译成JSON和背部。

正如MongoDB Docs on MongoImport描述:

警告
避免使用mongoimport和mongoexport的完整实例生产备份。它们不能可靠地保留所有丰富的BSON数据类型,因为JSON只能表示BSON支持的类型的一个子集。如MongoDB备份方法中所述,使用mongodump和mongorestore来实现这种功能。

另外,要小心使用mongorestore进行升级;只是因为数据如前所述被恢复,这并不意味着新版本的MongoDB可以使用它。例如,v2.4之后对授权模型进行了一系列更改,这意味着您需要must first upgrade to v2.6, and only then to v3.0。有在每个主要版本类似的结构性变化,所以建议您upgrade stepwise, one major version at a time

  1. V2.4 - > V2.6
  2. V2.6 - > V3.0
  3. 3.0 - > v3.2
  4. v3。2 - > v3.4
+0

这应该是你所建议的实际过程,但如果我使用mongoexport和mongoimport :),如果时间和大小不是问题,将会出现什么问题。 –

+0

我编辑了答案以提供更多信息,并链接到MongoDB手册。 –

+0

解决方案:没有简单的方法来升级:( –

-4

两个工具(默认情况下)的新版本将只走_id索引取数据,然后将它写出来到磁盘。所以,是的,这两种工具同样会影响你的工作集合,这就是为什么我通常会建议对付第二个工具(如果可能,最好是隐藏的辅助工具)。 我假设你正在寻找与mongoexport中的--fields选项相同的mongodump,只能转储出特定的字段。查询选项可用于过滤结果,但不能与投影一起使用(选择返回的字段) - 这是在TOOLS-28中追踪的功能请求,但尚未安排。

+1

您从此链接复制了确切的文本https://dba.stackexchange.com/questions/107549/backup-with-mongoexport-or-mongodump,我的用例不同,可能是我没有传达的信息正确地说,我的问题是,哪一个应该是从旧版本导出数据库并导入到较新版本的mongoDB的正确工具。 –

+0

我想你会发现mongodump更好更快 –

0

http://www.dba86.com/docs/mongo/2.4/core/import-export.html,从2.4版本支持mongoexport。因此它应该是正确的工具。但该文件仍然有警告信息。

警告: 避免使用mongoimport和mongoexport进行完整实例生产备份。他们不能可靠地保存所有丰富的BSON数据 类型,因为JSON只能代表BSON支持的 类型的子集。如MongoDB Backup 中所述使用mongodump和mongorestore这种功能的方法。

希望有帮助!!!!

+0

我已经更新了这个问题。 –