重要
MongoDB 8.3 是最新的次要发布。从MongoDB 8.2 开始,针对特定使用案例的本地部署部署(社区和 EA)可使用次要版本。 有关更多信息,请参阅 MongoDB版本控制。
要安装支持本地部署使用的最新MongoDB版本,请参阅安装说明。
在升级到 MongoDB 8.3 之前,请熟悉本文档的内容,包括仔细查看先决条件。
以下步骤概述了将作为分片成员的mongod从版本 8.2 升级到 8.3 的过程。
如果您需要升级到8.3 的指导, MongoDB专业服务可提供升级支持,以帮助确保平稳过渡,而不会中断MongoDB应用程序。
升级建议和清单
升级时,请考虑以下几点:
升级版本路径
要将现有 MongoDB 部署升级到 8.3,您必须运行 8.0 系列版本。
从次要版本升级时,您必须连续升级次要版本,直到升级到 8.3。
检查驱动程序兼容性
在升级 MongoDB 之前,请检查您是否使用与 MongoDB 8.3 兼容的驱动程序。请查阅与您具体驱动程序相对应的驱动程序文档,以验证与 MongoDB 8.3 的兼容性。
在不兼容的驱动程序上运行的升级部署可能会遇到意外或未定义的行为。
准备
在开始升级之前,请参阅 MongoDB 8.3 中的兼容性变更文档,以确保您的应用程序和部署与 MongoDB 8.3 兼容。在开始升级之前,请解决部署中的不兼容问题。
在升级 MongoDB 之前,请务必在临时环境中测试您的应用程序,然后再将升级部署到生产环境。
降级考虑因素
从MongoDB 8.3 开始,您可以将MongoDB版本降级到上一个次要版本或主要版本。
MongoDB 仅支持单版本降级。您无法降级到比当前版本落后多个版本的版本。
示例,您可以将 8.0 降级为 7.0部署。但是,不支持将 7.0部署进一步降级为 6.0部署。
要学习;了解更多信息,请参阅将8.3降级至8.2 。
先决条件
所有成员版本
要将分片集群升级到8.3 ,集群的所有成员必须至少为 8.2版本。升级进程会检查集群的所有组件,如果任何组件运行的版本早于8.2 ,则会发出警告。
特征兼容性版本
8.2 分片集群必须将 featureCompatibilityVersion 设置为 "8.2"。
要确保分片集群的所有成员都将 featureCompatibilityVersion设立为 "8.2",请连接到每个分片副本集成员和每个配置服务器副本集成员。然后,检查 featureCompatibilityVersion:
提示
对于已启用访问控制的分片群集,要针对分片副本集成员运行以下命令,您必须以分片本地用户身份连接到该成员。
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
"featureCompatibilityVersion" : { "version" : "8.2" }
要设置或更新 featureCompatibilityVersion,请在 mongos 上运行以下命令:
db.adminCommand( { setFeatureCompatibilityVersion: "8.2", confirm: true } )
有关更多信息,请参阅 setFeatureCompatibilityVersion。
副本集成员状态
对于分片和配置服务器,请确保没有副本集成员处于 ROLLBACK 或 RECOVERING 状态。
db.adminCommand( { replSetGetStatus: 1 } )
备份 config 数据库
可选但推荐使用。作为预防措施,请在分片集群之前创建 config数据库的备份。
下载 8.3 二进制文件
使用包管理器
如果从 MongoDB apt、yum、dnf 或 zypper 存储库安装 MongoDB,则应使用包管理器升级到 8.3。
按照适用于Linux系统的相应8.3 安装说明进行操作。这需要为新发布添加存储库,然后执行实际的升级过程。
手动下载 8.3 二进制文件
如果您尚未使用包管理器安装 MongoDB,则可以从 MongoDB 下载中心手动下载 MongoDB 二进制文件。
请参阅 8.3 安装说明了解更多信息。
升级程序
禁用负载均衡器
将 mongosh 连接到分片集群中的 mongos 实例,然后运行 sh.stopBalancer() 以禁用负载均衡器:
sh.stopBalancer()
注意
如果迁移正在进行,系统会在停止负载均衡器之前完成进行中的迁移。您可以运行sh.isBalancerRunning() 来检查负载均衡器的当前状态。
要验证负载均衡器是否已禁用,运行sh.getBalancerState() false,如果负载均衡器已禁用,则会返回 :
sh.getBalancerState()
有关禁用负载均衡器的更多信息,请参阅禁用负载均衡器。
升级配置服务器
升级从节点(secondary node from replica set)副本集的从节点,一次一个。
关闭从节点实例。
要关闭
mongod进程,请使用mongosh连接到集群节点,并运行以下命令:db.adminCommand( { shutdown: 1 } ) 将 8.2 二进制文件替换为 8.3 二进制文件。
启动 8.3 二进制文件。
使用
--configsvr、--replSet和--port选项启动 8.3 二进制文件。包括部署使用的任何其他选项。mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> 如果使用配置文件,更新该文件以指定
sharding.clusterRole: configsvr、replication.replSetName、net.port和net.bindIp8,然后启动.3 二进制文件:sharding: clusterRole: configsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> 包括适合您部署的任何其他设置。
等待成员恢复到
SECONDARY状态,然后再升级下一个从从节点(secondary node from replica set)成员。要检查成员状态,请在
mongosh中发出rs.status()。
降级副本集主节点。
将
mongosh连接到主节点,并使用rs.stepDown()降级主节点,强制选举新的主节点:rs.stepDown() 关闭降级主节点。
当
rs.status()显示主节点已降级,并且另一个节点已显示为PRIMARY状态时,关闭已降级的主节点。要关闭已降级的主节点,请使用
mongosh连接到主节点,并运行以下命令:db.adminCommand( { shutdown: 1 } ) 将
mongod二进制文件替换为8.3二进制文件。启动 8.3 二进制文件。
使用
--configsvr、--replSet、--port和--bind_ip选项启动 8.3。包括上一个部署使用的任何其他命令行选项:mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> 如果使用配置文件,请更新文件以指定
sharding.clusterRole: configsvr、replication.replSetName、net.port和net.bindIp,然后启动 8.3二进制:sharding: clusterRole: configsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> 包括适合您的部署的任何其他配置。
升级分片
一次升级一个分片。
对于每个分片副本集:
升级从节点(secondary node from replica set)副本集的从节点,一次一个。
关闭从节点实例。
要关闭
mongod进程,请使用mongosh连接到集群节点,并运行以下命令:db.adminCommand( { shutdown: 1 } ) 将 8.2 二进制文件替换为 8.3 二进制文件。
使用
--shardsvr、--replSet、--port和--bind_ip选项启动 8.3 二进制文件。根据您的部署包含任何其他合适的命令行选项:mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> 如果使用配置文件,请更新文件以包括
sharding.clusterRole: shardsvr、replication.replSetName、net.port和net.bindIp,然后启动 8.3 二进制文件:sharding: clusterRole: shardsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> 包括适合您的部署的任何其他配置。
等待成员恢复到
SECONDARY状态,然后再升级下一个从从节点(secondary node from replica set)成员。要检查节点状态,请在
mongosh中发出rs.status()。对每个从节点重复上述步骤。
降级副本集主节点。
将
mongosh连接到主节点,并使用rs.stepDown()降级主节点,强制选举新的主节点:rs.stepDown() 升级已降级的主节点。
当
rs.status()显示主节点已降级,并且另一个节点已显示为PRIMARY状态时,升级已降级的主节点:关闭降级主节点。
要关闭已降级的主节点,请使用
mongosh连接到副本集节点,并运行以下命令:db.adminCommand( { shutdown: 1 } ) 替换
mongod二进制文件。 与8.3二进制文件一起使用。启动 8.3 二进制文件。
使用
--shardsvr、--replSet、--port和--bind_ip选项启动 8.3 二进制文件。根据您的部署包含任何其他合适的命令行选项:mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> 如果使用配置文件,请更新文件以指定
sharding.clusterRole: shardsvr、replication.replSetName、net.port和net.bindIp,然后启动 8.3二进制:sharding: clusterRole: shardsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> 包括适合您的部署的任何其他配置。
升级mongos 实例
重要
首先升级所有配置服务器副本集(CSRS)实例,然后升级所有分片成员,最后升级 mongos 实例。在完成这些升级之前升级 mongos 可能会导致兼容性问题。
将每个 mongos 实例替换为 8.3 二进制文件并重新启动。包括适合您部署的任何其他配置。
注意
当分片集群成员在不同主机上运行或者远程客户端连接到分片集群时,必须指定 --bind_ip 选项。
mongos --configdb csReplSet/<rsconfigsver1:port1>,<rsconfigsver2:port2>,<rsconfigsver3:port3> --bind_ip localhost,<ip address>
重新启用负载均衡器
使用 mongosh 连接到集群中的 mongos,然后运行 sh.startBalancer() 重新启用负载均衡器:
sh.startBalancer()
有关重新启用负载均衡器的更多信息,请参阅启用负载均衡器。
启用向后不兼容的 8.3 功能
此时,您可以运行 8.3 二进制文件,而不会启用与 8.3 不兼容的 8.2 功能。
要启用这些 8.3 功能,请将特征兼容性版本(FCV)设立为 8.3。您还必须将 confirm设立为 true。
提示
启用这些向后不兼容的功能可能会使降级过程变得复杂,因为在降级之前,您必须删除任何持续存在的向后不兼容的功能。
升级后,建议让部署在不启用这些功能的情况下稳定运行一段时间,以确保降级回老版本的可能性极小。当确信降级的可能性非常小时,请启用这些功能。
在 mongos 实例中,在 admin 数据库中运行 setFeatureCompatibilityVersion 命令:
db.adminCommand( { setFeatureCompatibilityVersion: "8.3", confirm: true } )
设置 featureCompatibilityVersion (FCV) : "8.3 "replSetReconfig对每个分片隐式执行 ,以将term 字段添加到分片副本配置文档中。
直到新配置传播到大多数副本集成员后,该命令才会完成。
此命令必须对内部系统集合执行写入。如果该命令未完成,您可以安全地在mongos 上重试该命令,因为该操作是幂等的。
注意
当 setFeatureCompatibilityVersion 在分片集群上运行时,数据块迁移、分割和合并可能会失败并显示 ConflictingOperationInProgress 。
当您将 setFeatureCompatibilityVersion设立为8.3 时, MongoDB会清理分片上存在的所有孤立文档。清理进程:
不阻止升级完成,并且
速率是否受到限制。要减轻清理孤立文档期间对性能的潜在影响,请参阅范围删除性能优化。
其他升级程序
要升级独立运行运行,请参阅将 8.2独立运行升级到8.3 。
要升级副本集,请参阅将 副本集升级到 8.28.3。