恢复mongodb<;mongodb 3.4中的3.0数据文件(.ns、.0、.1)
在一个两年前的服务器备份中,我发现了几个需要在当前版本的MongoDB(例如v3.4)中恢复的MongoDB集合。不幸的是,恢复mongodb<;mongodb 3.4中的3.0数据文件(.ns、.0、.1),mongodb,Mongodb,在一个两年前的服务器备份中,我发现了几个需要在当前版本的MongoDB(例如v3.4)中恢复的MongoDB集合。不幸的是,mongod--dbpath标志不再受支持,因此存储在.ns、.0和.1文件中的集合无法按预期转储和还原 我是否需要旧版本的MongoDB(MongoDB 3.4中仍然提供原始版本,它不再是默认的存储引擎 如果要读取由旧版本MongoDB创建的MMAP数据文件,您可以: 使用参数(或等效的配置文件)启动一个新的mongod实例,并使用MongoDB 3.4的mongodum
mongod--dbpath
标志不再受支持,因此存储在.ns、.0和.1文件中的集合无法按预期转储和还原
我是否需要旧版本的MongoDB(MongoDB 3.4中仍然提供原始版本,它不再是默认的存储引擎
如果要读取由旧版本MongoDB创建的MMAP数据文件,您可以:
mongod
实例,并使用MongoDB 3.4的mongodump
导出所需的集合mongodump
实用程序,该实用程序支持直接读取MMAP文件。仅当您的数据文件来自MongoDB 2.6或更早版本时,才建议使用此选项,因为2.6mongodump
可能无法正确处理较新数据文件中的某些功能。第一种方法可能更为保守方便(和兼容)mongodump
和mongorestore
中有几个功能将有助于数据迁移。特别是:通过stdin转储和还原的功能,在还原时和还原期间包括或排除
我建议在新端口上启动第二个mongod
实例。如果您有大量数据要传输,您可能希望在单独的服务器上运行此实例,以避免位于同一个mongod
进程之间的RAM和I/O争用。通过mongodump
转储的数据必须读入内存,然后mongorestore
将写入数据并在目标服务器上重建所有索引
例如:
mongod --dbpath /path/to/mmapfiles --storageEngine mmapv1 --port 28000
然后,您可以:
- 使用类似以下命令行将单个集合转储到3.4实例中:
mongodump --db test --collection books --port 28000 | mongorestore --port 27017
- 使用带有通配符(
)的*
选项选择一系列集合。例如,mongorestore--nsInclude
数据库中以测试
开头的所有集合:b
mongodump --db test --port 28000 | mongorestore --port 27017 --nsInclude 'test.b*'
mongod
实例,并使用MongoDB 3.4的mongodump
导出所需的集合mongodump
实用程序,该实用程序支持直接读取MMAP文件。仅当您的数据文件来自MongoDB 2.6或更早版本时,才建议使用此选项,因为2.6mongodump
可能无法正确处理较新数据文件中的某些功能。第一种方法可能更为保守方便(和兼容)mongodump
和mongorestore
中有几个功能将有助于数据迁移。特别是:通过stdin转储和还原的功能,在还原时和还原期间包括或排除
我建议在新端口上启动第二个mongod
实例。如果您有大量数据要传输,您可能希望在单独的服务器上运行此实例,以避免位于同一个mongod
进程之间的RAM和I/O争用。通过mongodump
转储的数据必须读入内存,然后mongorestore
将写入数据并在目标服务器上重建所有索引
例如:
mongod --dbpath /path/to/mmapfiles --storageEngine mmapv1 --port 28000
然后,您可以:
- 使用类似以下命令行将单个集合转储到3.4实例中:
mongodump --db test --collection books --port 28000 | mongorestore --port 27017
- 使用带有通配符(
)的*
选项选择一系列集合。例如,mongorestore--nsInclude
数据库中以测试
开头的所有集合:b
mongodump --db test --port 28000 | mongorestore --port 27017 --nsInclude 'test.b*'
mongod--dbpath/path/to/mmapfiles
。谢谢你的提示!简单地从MongoDB 4.0降级到3.4就足以让我运行mongod--dbpath/path/to/mmapfiles
。谢谢你的提示!