参考 > 发行说明 > MongoDB 3.6发布说明 > 将分片平均升级到3.6
在本页面
注意
MongoDB 3.6未在macOS 10.13中的新文件系统APFS上进行测试,可能会遇到错误。
从MongoDB 3.6.13开始,MongoDB 3.6系列删除了对Ubuntu 16.04 PPCLE的支持。
对于支持Ubuntu 16.04 POWER / PPC64LE的MongoDB Enterprise早期版本:
由于glibc
Ubuntu 16.04 for POWER的较早版本的软件包中存在锁定省略错误,因此必须glibc
至少
在运行MongoDB之前将软件包升级到。使用该软件包较旧版本的系统
会由于随机内存损坏而导致数据库服务器崩溃和行为异常,并且不适合MongoDB的生产部署glibc 2.23-0ubuntu5
glibc
重要
在尝试进行任何升级之前,请熟悉本文档的内容。
如果您需要有关升级到3.6的指导,MongoDB提供主要版本升级服务,以确保平稳过渡而不会中断您的MongoDB应用程序。
升级时,请考虑以下事项:
要将现有的MongoDB部署升级到3.6,必须运行3.4系列发行版。
要从3.4系列之前的版本升级,必须连续升级主要版本,直到升级到3.4系列为止。例如,如果您运行的是3.2系列,则必须先 升级到3.4, 然后才能升级到3.6。
在开始升级之前,请参阅MongoDB 3.6中的兼容性更改文档,以确保您的应用程序和部署与MongoDB 3.6兼容。开始升级之前,请解决部署中的不兼容性。
在升级MongoDB之前,请务必先在临时环境中测试应用程序,然后再将升级部署到生产环境中。
开始在MongoDB中3.6,mongod
和mongos
实例绑定默认为localhost。远程客户端(包括副本集的其他成员)无法连接到仅绑定到本地主机的实例。要覆盖并绑定到其他IP地址,请使用
net.bindIp
配置文件设置或--bind_ip
命令行选项来指定IP地址列表。
如果分片群集成员在其他主机上运行,或者希望远程客户端连接到分片群集,则升级过程将要求您指定
net.bindIp
设置(或--bind_ip
)。
有关更多信息,请参见Localhost绑定兼容性更改。
从MongoDB 3.6开始,mongod
具有分片服务器角色的实例必须是副本集成员。
要将分片群集升级到版本3.6,分片服务器必须作为副本集运行。要将现有的分片独立实例转换为分片副本集,请参见将分片独立实例 转换为分片副本集。
对于MongoDB 3.6.0-3.6.3二进制文件,仅应在将MongoDB二进制文件升级并将分片群集的功能兼容性版本更新为3.6之后,才应将驱动程序升级到 3.6功能兼容的驱动程序。
有关更多信息,请参阅SERVER-33763。
要将分片群集升级到3.6,群集的所有成员必须至少为3.4版。升级过程将检查群集的所有组件,如果有任何组件运行的版本早于3.4,则会发出警告。
3.4分片群集必须
featureCompatibilityVersion
设置为3.4
。
为了确保分片群集的所有成员都
featureCompatibilityVersion
设置为3.4
,请连接到每个分片副本集成员和每个配置服务器副本集成员,然后检查featureCompatibilityVersion
:
小费
对于已启用访问控制的分片群集,要对分片副本集成员运行以下命令,您必须以分片本地用户身份连接到该成员。
所有成员都应返回包含的结果
。"featureCompatibilityVersion": "3.4"
要设置或更新featureCompatibilityVersion
,请在上运行以下命令mongos
:
有关更多信息,请参见
setFeatureCompatibilityVersion
。
3.4分片群集中的分片必须是分片感知的(即,分片必须已收到shardIdentity
位于admin.system.version
集合中的文档):
对于以3.4开始的分片群集,分片可以识别分片。
对于从3.2系列进行了升级改造是3.4分片集群,当您更新featureCompatibilityVersion
从3.2
到3.4
,在配置服务器尝试发送碎片各自shardIdentity
每隔30秒,直到成功文件。您必须等到所有分片都收到文档为止。
要检查分片副本集成员是否已收到其
shardIdentity
文档,请对数据库find
中的system.version
集合发出命令,并在位置admin
检查文档。"_id" : "shardIdentity"
有关shardIdentity
文档的示例:
config
数据库可选,但推荐。作为预防措施,在升级分片群集之前,请对config
数据库进行备份
。
将mongo
外壳连接到分片mongos
群集中的实例,然后运行sh.stopBalancer()
以禁用平衡器:
注意
如果正在进行迁移,则系统将在停止平衡器之前完成正在进行的迁移。您可以运行
sh.isBalancerRunning()
以检查平衡器的当前状态。
要验证是否禁用了平衡器,请运行run
sh.getBalancerState()
,如果禁用了平衡器,则返回false:
有关禁用平衡器的更多信息,请参阅 禁用平衡器。
一次升级 一个副本集的辅助成员:
关闭辅助mongod
实例,然后用3.6二进制文件替换3.4二进制文件。
启动3.6二进制用--configsvr
,
--replSet
和--port
。包括部署使用的任何其他选项。
注意
--bind_ip
当分片群集成员在不同主机上运行时,或者如果远程客户端连接到分片群集,则必须指定该选项。有关更多信息,请参见
Localhost绑定兼容性更改。
如果使用配置文件,更新文件来指定,,
,和,然后启动3.6二进制文件:sharding.clusterRole: configsvr
replication.replSetName
net.port
net.bindIp
包括适用于您的部署的任何其他设置。
等待成员恢复SECONDARY
状态,然后再升级下一个辅助成员。要检查成员的状态,请rs.status()
在mongo
shell中发出。
对每个次要成员重复上述步骤。
降级主副本集。
将mongo
外壳连接到主要数据库,并用于
rs.stepDown()
降低主要数据库并强制选择新的主要数据库:
当rs.status()
显示主节点已降级并且另一个成员已PRIMARY
进入状态时,请关闭已降级的主mongod
节点,然后用3.6二进制文件替换二进制文件。
启动3.6二进制用--configsvr
,
--replSet
,--port
,和--bind_ip
选项。包括先前部署使用的所有可选命令行选项:
注意
--bind_ip
当分片群集成员在不同主机上运行时,或者如果远程客户端连接到分片群集,则必须指定该选项。有关更多信息,请参见
Localhost绑定兼容性更改。
如果使用配置文件,更新文件来指定,,
,和,然后启动3.6二进制文件:sharding.clusterRole: configsvr
replication.replSetName
net.port
net.bindIp
包括适合您的部署的任何其他配置。
一次升级一个碎片。
对于每个分片副本集:
一次升级 一个副本集的辅助成员:
关闭mongod
实例,然后用3.6二进制文件替换3.4二进制文件。
启动3.6二进制用--shardsvr
,
--replSet
,--port
,和--bind_ip
选项。包括先前部署使用的所有可选命令行选项:
注意
--bind_ip
当分片群集成员在不同主机上运行时,或者如果远程客户端连接到分片群集,则必须指定该选项。有关更多信息,请参见
Localhost绑定兼容性更改。
如果使用配置文件,更新文件,包括,
,,和
,然后启动3.6二进制文件:sharding.clusterRole: shardsvr
replication.replSetName
net.port
net.bindIp
包括适合您的部署的任何其他配置。
等待成员恢复SECONDARY
状态,然后再升级下一个辅助成员。要检查成员的状态,可以rs.status()
在
mongo
shell中发出。
对每个次要成员重复上述步骤。
降级主副本集。
将mongo
外壳连接到主要数据库,并用于
rs.stepDown()
降低主要数据库并强制选择新的主要数据库:
当rs.status()
显示主节点已卸任并且另一成员已PRIMARY
处于状态时,请升级已卸除的主抵押:
关闭逐步降低的主数据库,然后将mongod
二进制文件替换
为3.6二进制文件。
启动3.6二进制用--shardsvr
,
--replSet
,--port
,和--bind_ip
选项。包括先前部署使用的所有可选命令行选项:
注意
--bind_ip
当分片群集成员在不同主机上运行时,或者如果远程客户端连接到分片群集,则必须指定该选项。有关更多信息,请参见
Localhost绑定兼容性更改。
如果使用配置文件,更新文件来指定,,
,和,然后启动3.6二进制文件:sharding.clusterRole: shardsvr
replication.replSetName
net.port
net.bindIp
包括适合您的部署的任何其他配置。
mongos
实例。¶用mongos
3.6二进制文件替换每个实例,然后重新启动。包括适合您的部署的任何其他配置。
注意
--bind_ip
当分片群集成员在不同主机上运行时,或者如果远程客户端连接到分片群集,则必须指定该选项。有关更多信息,请参见
Localhost绑定兼容性更改。
此时,您可以运行3.6二进制文件,而没有与3.4 不兼容的3.6 功能。也就是说,您可以运行功能兼容版本设置为3.4的3.6分片群集
重要
对于MongoDB 3.6.0-3.6.3,仅在将分片群集的功能兼容版本更新为3.6后,才应将驱动程序升级到 3.6功能兼容的驱动程序。有关更多信息,请参阅SERVER-33763。
要启用这些3.6功能,请将功能兼容版本(FCV
)设置为3.6。
注意
启用这些向后不兼容的功能可能会使降级过程复杂化,因为在降级之前必须删除所有持久的向后不兼容的功能。
建议在升级后,允许您在不启用这些功能的情况下运行部署,并且要在预热期内确保降级的可能性最小。如果您确信降级的可能性很小,请启用这些功能。
在mongos
实例上,setFeatureCompatibilityVersion
在admin
数据库中运行
命令:
此命令必须执行对内部系统集合的写入。如果由于某种原因该命令未成功完成,则可以安全地重试该命令,
mongos
因为该操作是幂等的。