如何升级Mongodb——官方指南

今天看到有人在群里问如何从4.0 升级到4.2,网上说的云里雾里的。此处贴出官网的升级指南,底部有原网文档连接。像这种操作手册的话,如果网上没有人有详细的对应版本的教程,最全的文档第一时间应该想到官方。该内容范围来源于与Google,再次鸣谢Google translate

将独立版本升级到4.2

如果您需要有关升级到4.2的指导,则MongoDB提供主要版本升级服务,以确保平稳过渡而不会中断您的MongoDB应用程序。

升级建议和清单

升级时,请考虑以下事项:

升级版本路径

要将现有的MongoDB部署升级到4.2,必须运行4.0系列发行版。

要从4.0系列之前的版本升级,必须连续升级主要版本,直到升级到4.0系列为止。例如,如果运行的是3.6系列,则必须先 升级到4.0 然后才能升级到4.2

防范

在开始升级之前,请参阅MongoDB 4.2兼容性更文档,以确保您的应用程序和部署与MongoDB 4.2兼容。开始升级之前,请解决部署中的不兼容性。

在升级MongoDB之前,请务必先在临时环境中测试应用程序,然后再将升级部署到生产环境中。

降级注意事项

升级到4.2后,如果需要降级,建议将其降到最新的4.0补丁程序。

前提条件

MMAPv1WiredTiger存储引擎

MongoDB 4.2删除了对不建议使用的MMAPv1存储引擎的支持。

如果您的4.0部署使用MMAPv1,则必须在升级到MongoDB 4.2之前将4.0部署更改为WiredTiger Storage Engine。有关详细信息,请参见将Standalone更改为WiredTiger

回顾当前配置

MongoDB 4.2中,mongod mongos进程将不会以MMAPv1特定配置选开头 。如果指定了先前版本的运行WiredTigerMongoDB,则它们会忽略MMAPv1配置选项。对于MongoDB 4.2,您必须从配置中删除它们。

功能兼容版本

4.0实例必须featureCompatibilityVersion设置为4.0。要检查featureCompatibilityVersion

复制

复制的

db.adminCommand ( {  getParameter  1  featureCompatibilityVersion  1  }  )

该操作应返回包含的结果 "featureCompatibilityVersion" : { "version" : "4.0" }

要设置或更新featureCompatibilityVersion,请运行以下命令:

复制

复制的

db.adminCommand ( {  setFeatureCompatibilityVersion  “ 4.0”  }  )

有关更多信息,请参见setFeatureCompatibilityVersion

下载4.2二进制文件

通过包管理器

如果从MongoDB的安装MongoDBaptyumdnf,或 zypper资料库,你应该使用你的包管理器升级到4.2

请遵循适用于您的Linux系统的4.2安装说。这将涉及为新版本添加存储库,然后执行实际的升级过程。

手动

如果尚未使用程序包管理器安装MongoDB,则可以从MongoDB下载中心手动下载MongoDB二进制文件。

有关更多信息,请参见4.2安装说

升级过程

1

4.2二进制文件替换现有的4.0二进制文件。

关闭您的mongod实例。用4.2 mongod二进制文件替换现有的二进制文件。

使用4.2重新启动部署mongod

2

启用向后不兼容的4.2功能。

此时,您可以运行4.2二进制文件,而没有与4.0不兼容的4.2 

要启用这些4.2功能,请将功能兼容版本(FCV)设置为4.2

小费

启用这些向后不兼容的功能可能会使降级过程复杂化,因为在降级之前必须删除所有持久的向后不兼容的功能。

建议在升级后,允许您在不启用这些功能的情况下运行部署,并且要在预热期内确保降级的可能性最小。如果您确信降级的可能性很小,请启用这些功能。

setFeatureCompatibilityVersion针对admin数据库运行命令:

复制

复制的

db.adminCommand ( {  setFeatureCompatibilityVersion  “ 4.2”  }  )

此命令必须执行对内部系统集合的写入。如果由于某种原因该命令未成功完成,则可以安全地重试该命令,因为该操作是幂等的。

升级后

TLS选项替换不推荐使用的SSL选项

MongoDB 4.2开始,MongoDB弃用mongodmongosmongo shellSSL选项 以及相应的net.ssl Options配置文件选项。

为避免弃用消息,请TLSmongodmongosmongo shell使用新选项 

4.2兼容的驱动程序默认重试写入

需要与MongoDB 3.64.0兼容的官方驱动程序,包括retryWrites=true连接字符串的选项才能 为该启用可重试的写入。

MongoDB 4.2兼容的官方驱动程序默认情况下启用可重试写。升级到需要兼容重写的4.2兼容驱动程序的应用程序可以忽略该retryWrites=true 选项。应用升级到需要的4.2兼容的驱动程序 禁用重试写操作必须包括 retryWrites=false连接的字符串中。

 

 

将副本集升级到4.2

如果您需要有关升级到4.2的指导,则MongoDB提供主要版本升级服务,以确保平稳过渡而不会中断您的MongoDB应用程序。

升级建议和清单

升级时,请考虑以下事项:

升级版本路径

要将现有的MongoDB部署升级到4.2,必须运行4.0系列发行版。

要从4.0系列之前的版本升级,必须连续升级主要版本,直到升级到4.0系列为止。例如,如果运行的是3.6系列,则必须先 升级到4.0 然后才能升级到4.2

防范

在开始升级之前,请参阅MongoDB 4.2兼容性更改文档,以确保您的应用程序和部署与MongoDB 4.2兼容。开始升级之前,请解决部署中的不兼容性。

在升级MongoDB之前,请务必先在临时环境中测试应用程序,然后再将升级部署到生产环境中。

降级注意事项

升级到4.2后,如果需要降级,建议将其降级到最新的4.0补丁程序。

读关注多数(3成员主要-次要-仲裁器体系结构)

MongoDB 3.6开始,"majority"默认情况下,MongoDB启用对读取关注的支持 

您可以禁用读取关注,"majority"以防止存储高速缓存压力固定具有主从仲裁器(PSA)体系结构的三成员副本集或具有三成员PSA分片的分片群集。

注意

禁用"majority"读取关注会影响对分片群集上事务的支持 。特别:

但是,它不影响 副本集上的事务。对于副本集上的事务,即使禁用了读取关注,也可以为多文档事务指定读取关注"majority"("snapshot" "local")"majority"

禁用"majority"读取关注会禁用对MongoDB 4.0及更早版本的变更流的支持。对于MongoDB 4.2+,禁用读取关注"majority"不会影响更改流的可用性。

当升级到4.2且禁用了多数阅读功能时,可以将更改流用于部署。

有关更多信息,请参见禁用多数阅读关注

更改流恢复令牌

MongoDB 4.2使用版本4.0.7中引入的版本1(v1)更改流 恢复令牌

恢复令牌_data类型取决于MongoDB版本,在某些情况下,取决于更改流打开/恢复时的功能兼容性版本(fcv)(即,fcv值的更改不会影响已打开的更改流的恢复令牌。 )

MongoDB版本

功能兼容版本

恢复令牌_data类型

MongoDB 4.2及更高版本

“ 4.2”或“ 4.0”

十六进制编码的字符串(v1)

MongoDB 4.0.7及更高版本

“ 4.0”或“ 3.6”

十六进制编码的字符串(v1)

MongoDB 4.0.6及更早版本

“ 4.0”

十六进制编码的字符串(v0)

MongoDB 4.0.6及更早版本

“ 3.6”

BinData

MongoDB 3.6

“ 3.6”

BinData

MONGODB 4.0.6或更早版本升级到MONGODB 4.2

在升级过程中,客户端可能会v1在连接到尚未更新的成员(即仅接受v0令牌)而失败时尝试使用新的恢复令牌恢复更改流。在这种情况下,客户端必须等待4.2升级完成才能恢复更改流。

前提条件

所有会员版本

所有副本集成员必须正在运行版本4.0。要从3.6系列或更早的版本升级副本集,请首先 将副本集的所有成员升级到最新的4.0系列版本,然后按照从MongoDB 4.0升级到4.2的过程进行操作。

MMAPv1WiredTiger存储引擎

MongoDB 4.2删除了对不建议使用的MMAPv1存储引擎的支持。

如果您的4.0部署使用MMAPv1,则必须在升级到MongoDB 4.2之前将4.0部署更改为WiredTiger Storage Engine。有关详细信息,请参见将副本集设置为WiredTiger

回顾当前配置

MongoDB 4.2中,mongod mongos进程将不会以MMAPv1特定配置选项开头 。如果指定了先前版本的运行WiredTigerMongoDB,则它们会忽略MMAPv1配置选项。对于MongoDB 4.2,您必须从配置中删除它们。

功能兼容版本

4.0副本集必须 featureCompatibilityVersion设置为4.0

为确保副本集的所有成员都 featureCompatibilityVersion设置为4.0,请连接到每个副本集成员并检查featureCompatibilityVersion

复制

复制的

db .adminCommand ( {  getParameter 1 featureCompatibilityVersion 1  }  )

所有成员都应返回包含的结果 "featureCompatibilityVersion" : { "version" : "4.0" }

要设置或更新featureCompatibilityVersion,请在主服务器上运行以下命令。大多数数据承载成员必须可用:

复制

复制的

db .adminCommand ( {  setFeatureCompatibilityVersion “ 4.0”  }  )

有关更多信息,请参见 setFeatureCompatibilityVersion

副本集成员状态

确保没有副本集成员处于ROLLBACK RECOVERING状态。

下载4.2二进制文件

通过包管理器

如果从MongoDB的安装MongoDBaptyumdnf,或 zypper资料库,你应该使用你的包管理器升级到4.2

请遵循适用于您的Linux系统的4.2安装说明。这将涉及为新版本添加存储库,然后执行实际的升级过程。

手动

如果尚未使用程序包管理器安装MongoDB,则可以从MongoDB下载中心手动下载MongoDB二进制文件。

有关更多信息,请参见4.2安装说明

升级过程

您可以使用滚动升级从MongoDB 4.0升级到4.2,以通过在其他成员可用时分别升级成员来最大程度地减少停机时间。

1

升级副本集的辅助成员。

一次升级 一个副本集的辅助成员:

  1. 关闭mongod实例并将4.0二进制文件替换为4.2二进制文件。
  2. 重新启动成员。

2

降级主副本集。

mongo外壳连接到主要节点,并用于 rs.stepDown()降低主要节点并强制选择新的主要节点。

3

升级主数据库。

rs.status() 显示主节点已卸任并且另一成员已PRIMARY处于状态时,请升级已卸除的主抵押:

  1. 关闭降级的主数据库,然后用mongod4.2二进制文件替换 二进制文件。
  2. 重新启动成员。

4

启用向后不兼容的4.2功能。

此时,您可以运行4.2二进制文件,而没有与4.0不兼容的4.2 功能

要启用这些4.2功能,请将功能兼容版本(FCV)设置为4.2

小费

启用这些向后不兼容的功能可能会使降级过程复杂化,因为在降级之前必须删除所有持久的向后不兼容的功能。

建议在升级后,允许您在不启用这些功能的情况下运行部署,并且要在预热期内确保降级的可能性最小。如果您确信降级的可能性很小,请启用这些功能。

小费

确保没有正在进行的初始同步。setFeatureCompatibilityVersion在进行初始同步时运行 命令将导致重新启动初始同步。

在主数据库上setFeatureCompatibilityVersion,在admin数据库中运行命令:

复制

复制的

Db.adminCommand ( {  setFeatureCompatibilityVersion “ 4.2”  }  )

此命令必须执行对内部系统集合的写入。如果由于某种原因该命令未成功完成,则可以安全地在主数据库上重试该命令,因为该操作是幂等的。

升级后

TLS选项替换不推荐使用的SSL选项

MongoDB 4.2开始,MongoDB弃用mongodmongosmongo shellSSL选项 以及相应的net.ssl Options配置文件选项。

为避免弃用消息,请TLSmongodmongosmongo shell使用新选项 

4.2兼容的驱动程序默认重试写入

需要与MongoDB 3.64.0兼容的官方驱动程序,包括retryWrites=true连接字符串中的选项才能 为该连接启用可重试的写入。

MongoDB 4.2兼容的官方驱动程序默认情况下启用可重试写入。升级到需要兼容重写的4.2兼容驱动程序的应用程序可以忽略该retryWrites=true 选项。应用升级到需要的4.2兼容的驱动程序 禁用重试写操作必须包括 retryWrites=false连接的字符串中。

 

将分片集群升级到4.2

如果您需要有关升级到4.2的指导,则MongoDB提供主要版本升级服务,以确保平稳过渡而不会中断您的MongoDB应用程序。

升级建议和清单

升级时,请考虑以下事项:

升级版本路径

要将现有的MongoDB部署升级到4.2,必须运行4.0系列发行版。

要从4.0系列之前的版本升级,必须连续升级主要版本,直到升级到4.0系列为止。例如,如果运行的是3.6系列,则必须先 升级到4.0, 然后才能升级到4.2。

防范

在开始升级之前,请参阅MongoDB 4.2中兼容性更改文档,以确保您的应用程序和部署与MongoDB 4.2兼容。开始升级之前,请解决部署中的不兼容性。

在升级MongoDB之前,请务必先在临时环境中测试应用程序,然后再将升级部署到生产环境中。

降级注意事项

升级到4.2后,如果需要降级,建议将其降级到最新的4.0补丁程序。

读关注多数(3成员主要-次要-仲裁器体系结构)

从MongoDB 3.6开始,"majority"默认情况下,MongoDB启用对读取关注的支持 。

您可以禁用读取关注,"majority"以防止存储高速缓存压力固定具有主从仲裁器(PSA)体系结构的三成员副本集或具有三成员PSA分片的分片群集。

注意

禁用"majority"读取关注会影响对分片群集上事务的支持 。特别:

但是,它不影响 副本集上的事务。对于副本集上的事务,即使禁用了读取关注,也可以为多文档事务指定读取关注"majority"(或"snapshot" 或"local")"majority"

禁用"majority"读取关注会禁用对MongoDB 4.0及更早版本的变更流的支持。对于MongoDB 4.2+,禁用读取关注"majority"不会影响更改流的可用性。

当升级到4.2且禁用了“多数”阅读功能时,可以将更改流用于部署。

有关更多信息,请参见禁用多数阅读关注

更改流恢复令牌

MongoDB 4.2使用版本4.0.7中引入的版本1(即v1)更改流 恢复令牌

恢复令牌_data类型取决于MongoDB版本,在某些情况下,取决于更改流打开/恢复时的功能兼容性版本(fcv)(即,fcv值的更改不会影响已打开的更改流的恢复令牌。 ):

MongoDB版本

功能兼容版本

恢复令牌_data类型

MongoDB 4.2及更高版本

“ 4.2”或“ 4.0”

十六进制编码的字符串(v1)

MongoDB 4.0.7及更高版本

“ 4.0”或“ 3.6”

十六进制编码的字符串(v1)

MongoDB 4.0.6及更早版本

“ 4.0”

十六进制编码的字符串(v0)

MongoDB 4.0.6及更早版本

“ 3.6”

BinData

MongoDB 3.6

“ 3.6”

BinData

从MONGODB 4.0.6或更早版本升级到MONGODB 4.2时

在升级过程中,分片群集的成员将继续产生v0令牌,直到mongos升级第一个 实例。升级 mongos实例将开始产生v1变更流恢复令牌。这些不能用于在mongos尚未升级的上恢复流 。

前提条件

所有会员版本

要将分片群集升级到4.2,群集的所有成员必须至少为4.0版。升级过程将检查群集的所有组件,如果任何组件运行的版本早于4.0,则将生成警告。

MMAPv1到WiredTiger存储引擎

MongoDB 4.2删除了对不建议使用的MMAPv1存储引擎的支持。

如果您的4.0部署使用MMAPv1,则必须在升级到MongoDB 4.2之前将4.0部署更改为WiredTiger Storage Engine。有关详细信息,请参阅将分片群集更改为WiredTiger

回顾当前配置

在MongoDB 4.2中,mongod和 mongos进程将不会以MMAPv1特定配置选项开头 。如果指定了先前版本的运行WiredTiger的MongoDB,则它们会忽略MMAPv1配置选项。对于MongoDB 4.2,您必须从配置中删除它们。

功能兼容版本

4.0分片群集必须 featureCompatibilityVersion设置为4.0。

为了确保分片群集的所有成员都 featureCompatibilityVersion设置为4.0,请连接到每个分片副本集成员和每个配置服务器副本集成员,然后检查featureCompatibilityVersion:

小费

对于已启用访问控制的分片群集,要对分片副本集成员运行以下命令,您必须以分片本地用户身份连接到该成员。

复制

复制的

db.adminCommand ( {  getParameter 1 , featureCompatibilityVersion 1  }  )

所有成员都应返回包含的结果 。"featureCompatibilityVersion" : { "version" : "4.0" }

要设置或更新featureCompatibilityVersion,请在上运行以下命令mongos

复制

复制的

db.adminCommand ( {  setFeatureCompatibilityVersion “ 4.0”  }  )

有关更多信息,请参见 setFeatureCompatibilityVersion

副本集成员状态

对于分片和配置服务器,请确保没有副本集成员处于 ROLLBACKRECOVERING状态。

备份config数据库

可选,但推荐。作为预防措施,升级分片群集之前,请对config数据库进行备份 。

PowerPC上的哈希索引

仅适用于PowerPC

对于散列索引,MongoDB 4.2确保PowerPC上浮点值2 63的散列值与其他平台一致。

尽管可能包含大于2 63的浮点值的字段上的哈希索引是不受支持的配置,但是客户端仍可以在索引字段具有值2 63的位置插入文档。

  • 如果PowerPC上当前的MongoDB 4.0分片群集已将2 63的分片键值进行哈希处理,则在升级之前:
    1. 备份文档;例如mongoexport,使用--query来在分片字段中使用2 63选择文档。
    2. 删除值为2 63的文档。

按照以下步骤升级后,将导入已删除的文档。

  • 如果PowerPC上的现有MongoDB 4.0集合具有未用作分片键的值2 63的哈希索引条目,则您还可以选择在升级之前删除索引,然后在升级完成后重新创建索引。

要列出部署的所有哈希索引并查找其索引字段包含值2 63 哈希索引和PowerPC check的文档。

下载4.2二进制文件

使用程序包管理

如果从MongoDB的安装MongoDB的apt,yum,dnf,或 zypper资料库,你应该使用你的包管理器升级到4.2。

请遵循适用于您的Linux系统的4.2安装说明。这将涉及为新版本添加存储库,然后执行实际的升级过程。

下载4.2二进制手动

如果尚未使用程序包管理器安装MongoDB,则可以从MongoDB下载中心手动下载MongoDB二进制文件。

有关更多信息,请参见4.2安装说明

升级过程

1

禁用平衡器。

mongo外壳连接到分片mongos群集中的实例,然后运行sh.stopBalancer()以禁用平衡器:

复制

复制的

SH.stopBalancer ()

注意

如果正在进行迁移,则系统将在停止平衡器之前完成正在进行的迁移。您可以运行 sh.isBalancerRunning()以检查平衡器的当前状态。

要验证是否禁用了平衡器,请运行run sh.getBalancerState(),如果禁用了平衡器,则返回false:

复制

复制的

SH.getBalancerState ()

有关禁用平衡器的更多信息,请参阅 禁用平衡器

2

升级配置服务器。

  1. 一次升级 一个副本集的辅助成员:
    1. 关闭辅助mongod实例,并将4.0二进制文件替换为4.2二进制文件。
    2. 启动4.2二进制用--configsvr, --replSet--port。包括部署使用的任何其他选项。

复制

复制的

mongod --configsvr --replSet <replSetName> --port <端口> --dbpath <路径> --bind_ip localhost,<IP地址>

如果使用配置文件,更新文件来指定,, ,和,然后启动4.2二进制文件:sharding.clusterRole: configsvrreplication.replSetNamenet.portnet.bindIp

复制

复制的

分片

   clusterRole : configsvr

复制

   replSetName : <string>

net

   port : <port>

   bindIp : localhost,<IP地址>

storage

   dbpath : <path>

包括适用于您的部署的任何其他设置。

    1. 等待成员恢复SECONDARY状态,然后再升级下一个辅助成员。要检查成员的状态,请rs.status()mongoshell中发出。

对每个次要成员重复上述步骤。

  1. 降级主副本集。
    1. mongo外壳连接到主要数据库,并用于 rs.stepDown()降低主要数据库并强制选择新的主要数据库:

复制

复制的

rs.stepDown ()

    1. rs.status()显示主节点已降级并且另一个成员已PRIMARY进入状态时,请关闭已降级的主mongod节点,然后用4.2二进制文件替换二进制文件。
    2. 启动4.2二进制用--configsvr--replSet, --port,和--bind_ip选项。包括先前部署使用的所有可选命令行选项:

复制

复制的

mongod --configsvr --replSet <replSetName> --port <端口> --dbpath <路径> --bind_ip localhost,<IP地址>

如果使用配置文件,更新文件来指定,, ,和,然后启动4.2二进制文件:sharding.clusterRole: configsvrreplication.replSetNamenet.portnet.bindIp

复制

复制的

分片

   clusterRole : configsvr

复制

   replSetName : <string>

net

   port : <port>

   bindIp : localhost,<IP地址>

storage

   dbpath : <path>

包括适合您的部署的任何其他配置。

3

升级碎片。

一次升级一个碎片。

对于每个分片副本集:

  1. 一次升级 一个副本集的辅助成员:
    1. 关闭mongod实例并将4.0二进制文件替换为4.2二进制文件。
    2. 启动4.2二进制用--shardsvr--replSet, --port,和--bind_ip选项。包括适用于您的部署的所有其他命令行选项:

复制

复制的

mongod --shardsvr --replSet <replSetName> --port <端口> --dbpath <路径> --bind_ip本地主机,<IP地址>

如果使用配置文件,更新文件,包括, ,,和 ,然后启动4.2二进制文件:sharding.clusterRole: shardsvrreplication.replSetNamenet.portnet.bindIp

复制

复制的

sharding

   clusterRole : shardsvr

复制

   replSetName : <string>

net

   port : <port>

   bindIp : localhost,<IP地址>

storage

   dbpath : <path>

包括适合您的部署的任何其他配置。

    1. 等待成员恢复SECONDARY状态,然后再升级下一个辅助成员。要检查成员的状态,可以rs.status()在 mongoshell中发出。

对每个次要成员重复上述步骤。

  1. 降级主副本集。

mongo外壳连接到主要数据库,并用于 rs.stepDown()降低主要数据库并强制选择新的主要数据库:

复制

复制的

rs.stepDown ()

  1. rs.status() 显示主节点已卸任并且另一成员已PRIMARY处于状态时,请升级已卸除的主抵押:
    1. 关闭降级的主数据库,然后用mongod4.2二进制文件替换 二进制文件。
    2. 启动4.2二进制用--shardsvr--replSet, --port,和--bind_ip选项。包括适用于您的部署的所有其他命令行选项:

复制

复制的

mongod --shardsvr --replSet <replSetName> --port <端口> --dbpath <路径> --bind_ip本地主机,<IP地址>

如果使用配置文件,更新文件来指定,, ,和,然后启动4.2二进制文件:sharding.clusterRole: shardsvrreplication.replSetNamenet.portnet.bindIp

复制

复制的

sharding

   clusterRole : shardsvr

复制

   replSetName : <string>

net

   port : <port>

   bindIp : localhost,<IP地址>

storage

   dbpath : <path>

包括适合您的部署的任何其他配置。

4

升级mongos实例。

将每个mongos实例替换为4.2二进制文件并重新启动。包括适合您的部署的任何其他配置。

注意

--bind_ip当分片群集成员在不同主机上运行时,或者如果远程客户端连接到分片群集,则必须指定该选项。有关更多信息,请参见 Localhost绑定兼容性更改

复制

复制的

mongos --configdb csReplSet / <rsconfigsver1:port1>,<rsconfigsver2:port2>,<rsconfigsver3:port3> --bind_ip localhost,<IP地址>

如果从MongoDB 4.0.6或更早版本升级,

一旦mongos用于部署实例升级,即mongos例如开始产生 v1变化流恢复令牌。这些令牌不能用于在mongos尚未升级的实例上恢复流。

5

重新启用平衡器。

使用4.2 mongoShell,连接到 mongos集群中的并运行 sh.startBalancer()以重新启用平衡器:

复制

复制的

SH.startBalancer()

从MongoDB 4.2开始,sh.startBalancer()还可以对分片群集进行自动拆分。

如果您不希望在启用平衡器时启用自动拆分功能,则还必须运行sh.disableAutoSplit()

有关重新启用平衡器的更多信息,请参阅“ 启用平衡器”

6

启用向后不兼容的4.2功能。

此时,您可以运行4.2二进制文件,而没有与4.0不兼容的4.2 功能

要启用这些4.2功能,请将功能兼容版本(FCV)设置为4.2。

小费

启用这些向后不兼容的功能可能会使降级过程复杂化,因为在降级之前必须删除所有持久的向后不兼容的功能。

建议在升级后,允许您在不启用这些功能的情况下运行部署,并且要在预热期内确保降级的可能性最小。如果您确信降级的可能性很小,请启用这些功能。

mongos实例上,setFeatureCompatibilityVersion在admin 数据库中运行 命令:

复制

复制的

db.adminCommand({  setFeatureCompatibilityVersion “ 4.2”  } )

此命令必须执行对内部系统集合的写入。如果由于某种原因该命令未成功完成,则可以安全地重试该命令, mongos因为该操作是幂等的。

注意

从MongoDB 4.0开始,mongos尝试连接功能兼容版本(fCV)大于的mongod实例 时,二进制文件将崩溃。例如,您无法将MongoDB 4.0版本连接到fCV设置为4.2 的4.2分片群集。但是,您可以将MongoDB 4.0版本连接 到fCV设置为4.0 的4.2分片群集。mongosmongosmongos

升级后

TLS选项替换不推荐使用的SSL选项

从MongoDB 4.2开始,MongoDB弃用mongodmongosmongo shell的SSL选项 以及相应的net.ssl Options配置文件选项。

为避免弃用消息,请TLS对mongodmongosmongo shell使用新选项 。

4.2兼容的驱动程序默认重试写入

需要与MongoDB 3.6和4.0兼容的官方驱动程序,包括retryWrites=true连接字符串中的选项才能 为该连接启用可重试的写入。

与MongoDB 4.2兼容的官方驱动程序默认情况下启用可重试写入。升级到需要兼容重写的4.2兼容驱动程序的应用程序可以忽略该retryWrites=true 选项。应用升级到需要的4.2兼容的驱动程序 禁用重试写操作必须包括 retryWrites=false连接的字符串中。

Power PC和2的散列索引值63

如果在PowerPC上,您发现哈希索引字段的值为2 63,

  • 如果删除了文档,请从导出中将其替换(作为先决条件的一部分完成)。
  • 如果在升级之前删除了哈希索引,请重新创建索引。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章