MongoDB 3.4 版本 EOFS 升级一站式指南

更新时间:
复制 MD 格式

本文适用对象为云数据库 MongoDB 版 3.4 版本的用户。如果您收到了"无法续费"的提示,或者想知道 3.4 版本到期后该怎么办,请阅读本指南。

我的实例受影响吗?

你在什么情况下需要看这一节:收到了 EOFS 相关通知,但不确定自己的实例是否受影响。

什么是 EOFS?

EOFS(End of Full Support,停止全面支持)是阿里云产品生命周期的一个阶段。MongoDB 3.4 版本已进入 EOFS 阶段,意味着:

时间节点

发生什么

对你的影响

202311

停止新购(EOM)

无法再新购 3.4 版本实例

2026630

停止续费及变配(EOFS)

无法续费、无法转换付费类型、无法变配(扩容/降配)

20261231

终止服务(EOS)

实例资源释放,所有服务不可用

重要

从 2026 年 6 月 30 日起,3.4 版本实例无法续费也无法变配。如果您到期后续费失败,这正是原因所在。

如何判断我的实例是否受影响?

  1. 登录 MongoDB 控制台

  2. 在实例列表中查看您的实例的数据库版本列。

  3. 如果版本显示为 3.4,则您的实例受 EOFS 影响,需要尽快升级。

EOFS 后具体有哪些限制?

操作

EOFS 后是否支持

继续使用现有实例(到期前)

支持

续费

不支持(需升级后才能续费)

变配(扩容磁盘/升配/降配)

不支持

升级数据库大版本

支持(需满足升级条件)

退订

支持

自动续费

自动失效

说明

EOFS 后不能转为按量付费。到期后实例会进入 15 天锁定状态,期间无法访问。详见本文「来不及升级怎么办」部分。

我的实例能原地升级吗?升级路径速查

你在什么情况下需要看这一节:知道要升级,但不知道自己的实例能否在控制台直接升级,还是需要迁移。

升级路径速查表

根据您的实例架构和存储类型,找到对应的升级路径:

实例架构

存储类型

当前版本

可直接升级到

升级方式

单节点

本地盘版

3.4

4.0

控制台直接升级

副本集

本地盘版

3.4

4.0 或 4.2

控制台直接升级

分片集群

本地盘版

3.4

4.0 或 4.2

控制台直接升级

重要

如果您需要升级到 4.2 以上的版本(如 5.0、6.0、7.0、8.0),需要先升级到 4.2,将本地盘实例迁移成云盘,然后才能逐步升级;或直接新建高版本实例通过 DTS 迁移。

单节点实例可以直接升级吗?

可以。3.4版本单节点实例可直接在控制台升级大版本。

本地盘实例最高可升级到4.2版本?

本地盘版实例通过控制台最高只能升级到 4.2。如果需要升级到 5.0 或更高版本,需要迁移到云盘实例后继续升级。如需升级到高版本,推荐新建高版本的云盘版实例然后通过 DTS 迁移数据。原因如下:

  • 低版本和高版本之间可能存在不兼容情况,DTS迁移可以尽早暴露不兼容问题,而大版本升级之后无法回滚。大版本之间的兼容性,请参见MongoDB数据库大版本升级说明

  • 多次升级会导致多次闪断。大版本升级的影响,请参见升级数据库大版本

3.4 版本能否直接升级到 4.2(跳过 4.0)?

  • 3.4版本的副本集、分片集群实例可以支持直接升级到4.2版本。后台会逐步升级大版本(3.4 → 3.6 → 4.0 → 4.2),每升级一次发生一次闪断,您无需手动干预中间版本。

  • 3.4版本的单节点实例,仅支持升级到4.0版本。

升级会怎样?影响评估

你在什么情况下需要看这一节:知道要升级,但担心升级会影响业务,不敢操作。

升级会中断多久?

  • 副本集、分片集群:过程中会有1~2次主备切换,每次切换产生约30秒的闪断。

    说明

    跨版本升级(如 3.4 升级到 4.2),后台会逐步升级大版本,每一次升级都会触发多次切换,且会有1~2次闪断。请在业务低峰期执行升级,并确保应用程序具有重连机制。

    降低影响:推荐生产环境的应用程序通过ConnectionStringURI地址连接数据库。

    通过ConnectionStringURI地址连接实例,可以确保连接的节点始终为主节点(Primary),不会因为主备切换而影响应用的读写操作。如何通过ConnectionStringURI地址连接数据库,请参见副本集实例连接说明分片集群实例连接说明

  • 单节点实例:过程中会自动重启实例,业务会中断2分钟左右。

升级会丢数据吗?

不会。 升级过程不会导致数据丢失。但建议在升级前手动创建一次全量备份,以防万一。

升级后账号密码会变吗?

不会变。 账号和密码在升级后保持不变。

升级后连接地址会变吗?

  • 原地升级(副本集/分片集群本地盘版):连接地址不变。

  • DTS 迁移(单节点实例):新实例的连接地址与原实例不同,需要在升级完成后修改业务代码中的连接配置。

重要

推荐使用 ConnectionStringURI 高可用连接地址连接数据库。通过 ConnectionStringURI 连接,可以确保连接的节点始终为主节点(Primary),不会因为升级过程中的主备切换而影响读写。

升级后能回滚吗?

不能。 升级数据库大版本后不支持降级。升级前请务必做好兼容性测试和数据备份。

重要

升级数据库大版本后,低版本的备份数据不能恢复至云数据库 MongoDB 实例。您可以下载备份文件,将低版本的备份数据恢复至自建数据库。详见备份数据恢复

升级前需要检查磁盘空间吗?

需要。 建议升级前磁盘剩余空间不低于 20%,以确保升级过程有足够的空间完成数据重组。当前已进入 EOFS 阶段,无法再扩容磁盘。如果磁盘空间不足 20%,可尝试以下方案:

  1. 清理冗余数据:删除已废弃的集合、索引或临时数据,释放空间后再升级。

  2. 直接尝试升级:20% 是建议值而非硬性门槛,空间略低时升级仍可能成功。如果升级过程中因空间不足失败,系统会自动回滚,实例状态不受影响。

  3. 改用 DTS 迁移:购买一个磁盘空间更大的高版本新实例,通过 DTS 将数据迁移过去,迁移完成后释放旧实例。此方案不受磁盘空间限制。

升级有哪些兼容性风险?

3.4 升级到 4.0 和 4.2 时,各版本引入的兼容性变更如下:

升级到 4.0(中间经过 3.6):

变更项

说明

aggregate 返回值

不再返回单个文档,改为返回 cursor,需适配 cursor 迭代

snapshot 查询选项

不再支持

数组排序

$sort 聚合阶段内存限制为 100 MB

更新操作

同时更新多个字段时,新字段按字典顺序添加

reIndex

添加全局写锁,直到索引重建完成

copydbclone

不再支持(4.2 中正式删除)

升级到 4.2(中间经过 3.6 → 4.0 → 4.2,包含上述所有变更,另增加以下内容):

变更项

说明

group 命令

删除(3.4 起弃用,4.2 正式删除),请改用 db.collection.aggregate()mapReduce()

copydbclone

删除(4.0 起不再支持,4.2 正式删除)

cloneCollection

不再支持,请改用 mongoexport/mongoimport

geoNear

不再支持,请改用 $geoNear(聚合阶段)

repairDatabase

不再支持

afterClusterTime

不再支持

Retryable Writes

开源驱动默认启用

说明

MongoDB 4.0 中 group 命令仍可使用但已标记为弃用,4.2 才正式移除。如果您的代码中使用了 group 命令,升级到 4.2 前必须改为 aggregatemapReduce

完整的各版本兼容性变更说明,请参见 MongoDB 数据库大版本升级说明

升级前检查清单

你在什么情况下需要看这一节:已确定升级路径,准备开始升级操作。

在开始升级前,请逐项确认:

  • 确认实例架构(单节点/副本集/分片集群)和存储类型(本地盘)

  • 如为分片集群,确认实例协议类型为 MongoDB 协议(DynamoDB 协议实例不支持升级)

  • 如为分片集群,了解升级过程中平衡器会被自动关闭,升级完成后自动重新打开

  • 确认升级路径(控制台直接升级 or DTS 迁移)

  • 确认目标版本(4.0 or 4.2)

  • 检查磁盘剩余空间不低于 20%

  • 手动创建一次全量备份

  • 检查代码中是否使用了已移除的命令(groupcopydbclonegeoNearcloneCollectionrepairDatabase 等)

  • 确认 Java Driver 版本兼容目标 MongoDB 版本

  • 确认应用程序具有重连机制

  • 选择业务低峰期执行升级

  • 使用 ConnectionStringURI 高可用连接地址

升级操作步骤

你在什么情况下需要看这一节:已完成升级前检查,需要具体的操作步骤。

控制台直接升级(副本集/分片集群)

步骤 1:手动备份

升级前,建议手动创建一次全量备份。由于升级后不支持降级,必要时可将备份数据恢复到新建实例以快速恢复业务。

步骤 2:检查磁盘空间

确保磁盘剩余空间不低于 20%。如空间不足,参见磁盘空间不足的替代方案。

步骤 3:执行升级

  1. 登录 MongoDB 控制台

  2. 在实例列表中,单击目标实例 ID,进入实例基本信息页面。

  3. 在实例基本信息区域,将鼠标移动至升级数据库版本上,单击需要升级的数据库大版本(4.0 或 4.2)。

  4. 在弹出的确认对话框中,单击确定

说明

升级大版本时,系统会自动升级到该大版本的最新可用小版本。

步骤 4:等待升级完成

  • 升级过程中实例状态会显示为"升级中"。

  • 升级过程中会有 2~3 次约 30 秒的闪断,请确保应用程序具有重连机制。

  • 升级完成后,实例状态恢复为"运行中"。

  • 如果升级任务长时间显示"升级中",可以修改切换时间为"立即切换"来加速完成。

升级后验证

升级完成后,请进行以下验证:

  1. 版本确认:在控制台确认实例的数据库版本已变更为目标版本。

  2. 连接测试:使用客户端连接实例,确认连接正常。

  3. 数据完整性:检查关键业务数据是否完整。

  4. 应用功能:测试核心业务功能是否正常。

  5. 性能监控:观察升级后的性能指标是否正常。

来不及升级怎么办?

你在什么情况下需要看这一节:实例即将到期但来不及完成升级,或者实例已经过期锁定。

实例即将到期但来不及升级

如果您在实例到期前无法完成升级,请尽快提交工单说明以下信息:

  • 实例 ID

  • 当前到期时间

  • 升级计划和时间表

技术支持团队会根据您的具体情况协助处理。

实例已经过期并锁定

如果实例已经过期并进入锁定状态:

  1. 锁定时间线:实例到期后的第 1~15 天处于锁定状态,无法访问。到期后的第 16 天,实例的计算资源会被释放。到期后的第 23 天,数据不再保留。

    警告
    • 上述时间线仅适用于3.4版本副本集实例。

    • 单节点实例、本地盘版分片集群实例释放后不支持从回收站恢复。请在实例锁定期间(到期后第 1~15 天)尽快升级大版本。切勿等到计算资源释放后再处理。详见回收站注意事项

  2. 恢复方式:锁定状态下的MongoDB实例允许升级大版本。因此您可以先升级大版本,再进行续费。

  3. 恢复后立即升级:恢复访问后,请尽快升级数据库大版本。

常见问题(FAQ)

Q1:实例即将到期,无法续费,应如何处理?

A:单节点、副本集或分片集群,都可以直接在控制台升级到 4.0 或 4.2,升级后即可正常续费。如有特殊情况,请立即提交工单说明。

Q2:自动续费失效的原因

A:3.4 版本从 2026 年 6 月 30 日起停止续费服务,自动续费会因此失效。系统会在 EOFS 日期前通过短信和站内信通知。您需要升级数据库大版本后才能恢复续费。

Q3:升级到 4.0 还是 4.2?

A

  • 如果您的代码中使用了 group 命令,建议先升级到 4.0(4.0 中 group 仍可用但已弃用),完成代码改造后再升级到 4.2。

  • 如果没有使用 group 命令,可以直接升级到 4.2。4.2 支持控制台空间回收(compact),4.0 不支持。

Q4:升级后 Java 代码是否需要修改?

A:3.4 升级到 4.0/4.2 通常不需要修改 Java 代码,但请确认:

  • 没有使用 group 命令(4.2 移除)

  • 没有使用 copydbclonecloneCollectiongeoNearrepairDatabase 等已移除的命令

  • Java Driver 版本兼容目标 MongoDB 版本(建议使用 MongoDB 官方推荐的 Driver 版本,参见 Driver Compatibility Matrix

Q5:200G 数据迁移需要多久?

A:使用 DTS 迁移,200G 数据通常在小时级别完成。全量迁移免费,无流量费。如果需要增量迁移(无缝切换),需先开启源实例的 oplog。

Q6:升级过程中能否取消?

A:升级任务运行中无法取消。但您可以修改切换时间往后延,等业务低峰期再切换。建议在业务低峰期发起升级。

Q7:升级后副本集控制台只显示 2 个节点

A:这是正常现象。副本集的 Hidden 节点默认不在控制台显示。实例实际仍然是三节点架构,不影响高可用。

Q8:实例过期后数据是否保留?

A:3.4版本仅有本地盘版。

实例架构

保留策略

如何处理

单节点、分片集群实例

  • 到期后第 1~15 天:实例锁定,无法访问,但数据仍在。

  • 到期后第 16 天:计算资源释放。

在第16天之前,完成大版本升级和续费。

副本集实例

  • 到期后第 1~15 天:实例锁定,无法访问,但数据仍在。

  • 到期后第 16 天:计算资源释放,数据根据备份保留策略保留一段时间。

  • 到期后第 23 天:数据不再保留。

在第23天之前,完成大版本升级和续费。

续费恢复访问后可导出数据,导出完成后可以退订实例。

Q9:3.4 到 4.0 有没有兼容性问题?

A:3.4 到 4.0 没有已知的高风险兼容性问题。主要的变更包括 aggregate 返回 cursor 而非单个文档、不再支持 snapshot 查询选项、reIndex 添加全局写锁等。建议在升级前参照兼容性变更清单进行代码排查。

Q10:EOFS 后能否转为按量付费?

A:不能。EOFS 后既不能续费也不能转按量付费。到期后实例会进入 15 天锁定期,之后释放资源。唯一的解决方案是升级数据库大版本。

Q11:没有运维人员,如何完成升级?

A:建议:

  1. 提交工单,说明您的实例信息和升级需求,技术支持团队会提供协助。

  2. 联系阿里云合作伙伴提供升级服务。

Q12:升级时报错 "InvalidSaleComponentFault"

A:这通常是因为选择的规格在目标版本中不存在。例如独享型可能没有 832GB 的规格。请在升级时选择目标版本支持的规格,或提交工单确认可用规格列表。

Q13:Navicat 无法连接 3.4 实例

A:3.4 版本与高版本 Navicat 驱动可能存在兼容性问题。建议使用较低版本的 Navicat 驱动,或使用 mongo shell / mongosh 连接。升级到 4.0/4.2 后可使用最新版 Navicat。

附录:相关文档

文档名称

说明

升级数据库大版本

官方升级操作文档

MongoDB 产品生命周期策略

官方生命周期说明

MongoDB 数据库大版本升级说明

兼容性变更说明

回收站

过期/锁定实例恢复

DTS 数据迁移

DTS 迁移操作指南