- 发布笔记 >
- MongoDB 3.4 发布笔记 >
- 降级 MongoDB 3.4 到 3.2 >
- 降级 3.4 单机 到 3.2
降级 3.4 单机 到 3.2¶
在您尝试任何降级之前,请熟悉本文档的内容。
降级路径¶
一旦升级到3.4,您就不能降级到 3.2.7 或者之前的版本。您只可以降级到 3.2.8 或者之后的版本。
创建备份¶
可选,但是推荐。 创建您数据库的备份。
预先准备¶
在降级二进制之前,您必须降级功能兼容版本,并且删除所有与 3.2 或者之前版本 3.4 features incompatible ,如下面列出的功能所示。仅在 featureCompatibilityVersion 被设置为 "3.4" 的情况下。这些步骤是必要的。
1. Downgrade Feature Compatibility Version¶
2. Remove Views¶
如果您之前定义过任何视图,在将MongoDB 3.4 降级到 3.2 之前删除视图。
3. Remove Collation Option from Collections and Indexes¶
如果您之前已经定义过集合或索引的任何非 “简单” collation,在将MongoDB 3.4 降级到 3.2 之前删除集合或索引。
为了查找collation 规范的集合,您可以在 mongo shell 中运行下列命令:
db.adminCommand("listDatabases").databases.forEach(function(d){ let mdb = db.getSiblingDB(d.name); mdb.getCollectionInfos( { "options.collation": { $exists: true } } ).forEach(function(c){ print(mdb[c.name]); }); });
您可以将集合的内容迁移到一个没有collation规范的新集合(一个方式是通过聚合管道阶段 $out )。
为了查找collation 规范的索引,您可以在 mongo shell 中运行下列命令:
db.adminCommand("listDatabases").databases.forEach(function(d){ let mdb = db.getSiblingDB(d.name); mdb.getCollectionInfos().forEach(function(c){ let currentCollection = mdb.getCollection(c.name); currentCollection.getIndexes().forEach(function(i){ if (i.collation){ printjson(i); } }); }); });
删除collation规范的索引。在降级之后,重新创建删除的索引。
4. Convert Data of Type Decimal¶
转化所有 decimal 类型的数据。在MongoDB 3.4 版本之前,在包含 decimal 类型上的文档操作有可能会失败。您可以查阅 货币数据建模 了解一些可能的转化选项。
为了检查十进制的存在,您可以在可能包含十进制数据的集合上运行 db.collection.validate(true) 。
只有在 featureCompatibilityVersion 为 "3.2" 的时候, db.collection.validate(true) 才会报告十进制数据。
5. Downgrade Index Versions¶
如果您有 v: 2 索引(例如,如果 featureCompatibilityVersion: "3.4" , MongoDB 3.4 中创建的索引默认版本), 在降级MongoDB之前, reindex the collection 重新创建集合中的所有索引为 v: 1。
为了查找 v: 2 的索引,您可以在 mongo shell 中运行下列命令:
db.adminCommand("listDatabases").databases.forEach(function(d){ let mdb = db.getSiblingDB(d.name); mdb.getCollectionInfos().forEach(function(c){ let currentCollection = mdb.getCollection(c.name); currentCollection.getIndexes().forEach(function(i){ if (i.v === 2){ printjson(i); } }); }); });
流程¶
Download the latest 3.2 binaries.¶
Using either a package manager or a manual download, get the latest release in the 3.2 series. If using a package manager, add a new repository for the 3.2 binaries, then perform the actual downgrade process.
一旦升级到3.4,您就不能降级到 3.2.7 或者之前的版本。您只可以降级到 3.2.8 或者之后的版本。