更新 MongoDB
任何新的 Server CE/Server Pro 版本发布都会在其中指出对 MongoDB 支持版本的任何更改, 发行说明.
我应该更新 MongoDB 吗?
您应该 仅 在计划升级您的 Server CE/Server Pro 实例时才考虑更新您的 MongoDB 版本。
如果您运行的 MongoDB 版本比当前(或目标)版本推荐的版本更新,则无需进行任何更改。
您绝不应该降级您的 MongoDB 版本。
如果您遇到认为可能与当前 MongoDB 版本相关的具体问题,请随时 提交问题 如果您是 Server CE 用户,或如果您是 Server Pro 用户,请联系 Overleaf 支持。
检查您的 MongoDB 版本
打开 mongo shell 应立即打印出当前版本。
Overleaf Toolkit 用户:
bin/docker-compose exec mongo mongod --version
db version v5.0.24
构建信息: {
"version": "5.0.24",
"gitVersion": "f034f0c51b3dffef4b8c9452d77ede9888f28f66",
"openSSLVersion": "OpenSSL 1.1.1f 31 Mar 2020",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2004",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}Docker Compose 用户:
更新流程
在升级您的 Server CE/Server Pro 实例期间更新 MongoDB 版本的步骤如下:
决定您计划升级到的 Server CE/Server Pro 版本。
查找该特定 Overleaf Server CE/Server Pro 发行版推荐的 MongoDB 版本。
按照说明将 MongoDB 升级到目标版本。
升级 Server CE/Server Pro 镜像版本并重启实例。
我们的建议是始终将 Server CE/Server Pro 升级到最新可用版本,因为(仅对 Server Pro 用户)它始终保证受到支持。
在执行 Server CE/Pro 升级时,我们建议先将已部署的大版本升级到最新发行版本 然后 再升级到最新发行的 下一个 大版本。如果您的部署落后于最新版本超过一个大版本,则需要执行分步升级。
例如,如果您正在运行 3.5.10,您需要升级到 3.5.13 -> 执行完整项目历史迁移 -> 4.2.9 -> 5.5.4。
您应该 绝对不要 跳过大版本(3.5.10 -> 5.5.4)。如果您使用 Toolkit 且落后于最新版本超过一个大版本,您必须 不要 使用 bin/upgrade 脚本,因为您需要执行手动的分步升级。
确保在每次大版本升级时进行 一致的备份 然后 非常重要,以便在需要时能够回滚。
版本支持信息
如果您决定回到早期版本,此表显示了早期 Server CE/Server Pro 发行版推荐的 MongoDB 版本,但您应该 绝对不要 不要降级您的 MongoDB 版本。
2.0.x
3.4
-
-
2.1.x 到 2.4.x
3.6
-
-
>=2.5.0
4.0
-
-
>=3.1.0
4.2
-
-
>=3.2.0
4.4
-
-
>=4.2.0
5.0
-
-
>=5.1.0
6.0
-
-
>=5.3.1
6.0
5.0
8.0
>=5.5.0
6.0
6.0
8.0
6.0.0
8.0
8.0
8.0
上面的最低特性兼容性版本基于与所示 Overleaf 版本对应的建议使用的 MongoDB 版本。如果您计划使用更高版本,MongoDB 将有其自己的最低要求。
您可以查看兼容性表,该表指定与 MongoDB 一起使用的 MongoDB Node.js 驱动的受支持版本 这里.
您可以查看每个 MongoDB 版本的生命周期终止状态 这里.
升级 MongoDB
MongoDB 需要 逐步升级。这意味着您不能直接从,例如 4.0 直接升级到 5.0。您需要先更新 4.2 直接升级到 4.4,然后再更新 5.0.
MongoDB 使用偶数作为其稳定版本号。
在 Docker 外运行 MongoDB 时的更新说明
以下是来自 mongodb.com 的升级 MongoDB 时的更新说明链接。
升级的说明 5.0 及更高版本指向副本集安装,而不是独立实例。由于 Server Pro/CE 4.0.1+ 使用事务,MongoDB 需要以副本集模式运行。
MongoDB 3.2 至 4.2 的文档现在可通过 https://www.mongodb.com/docs/legacy/
基本说明
在大多数情况下,更新需要在实际更新 mongo 版本之前设置兼容性标志。步骤如下:
按照 MongoDB 发布说明中描述的方式设置兼容性标志(见下方示例)。
然后更新 mongo 镜像:
Toolkit 用户 更新
MONGO_VERSION中的值,例如MONGO_VERSION=6.0Docker Compose 用户 更新
mongo镜像标签, 例如:services -> mongo -> image: mongo:6.0;
示例:将 MongoDB 从 5.0 直接升级到 6.0
让我们首先确保我们正在运行 MongoDB 6.0:
Overleaf Toolkit 用户:
Docker Compose 用户:
根据 升级说明,唯一的要求是将 featureCompatibilityVersion 设置为 5.0。我们通过打开 MongoDB shell 并运行所示命令来执行此操作:
Overleaf Toolkit 用户:
Docker Compose 用户可以运行 docker compose exec mongo mongosh 以获取 shell 并运行与 Toolkit 用户相同的命令。
Overleaf Toolkit 用户:
然后我们将使用 bin/stop 命令停止 Server CE/Server Pro 和 MongoDB 实例, 在 MONGO_VERSION=6.0 中设置 config/overleaf.rc,然后使用 mongo 服务并使用 bin/up mongo) 来验证更新是否顺利完成。
最后,我们将把 Server CE/Server Pro 镜像版本更新到目标版本并使用 bin/up -d 命令重新创建所有服务。
Docker Compose 用户:
然后我们将使用 docker compose stop 命令,更新 docker-compose.yml 文件以使用 image: mongo:6.0,然后使用 mongo 服务使用 docker compose up mongo 命令来验证更新是否顺利完成。
最后,我们将把 Server CE/Server Pro 镜像版本更新到目标版本并重新创建所有服务,使用 docker compose up 命令重新创建所有服务。
示例:将 MongoDB 从 6.0 直接升级到 7.0 (Toolkit 用户)
首先确保您正在运行 MongoDB 6.0 使用 mongod --version 上面的命令。
根据 升级说明,唯一的要求是将 featureCompatibilityVersion 设置为 6.0。我们通过打开 MongoDB shell 并运行命令来执行此操作 db.adminCommand({ setFeatureCompatibilityVersion: "6.0" }) .
Overleaf Toolkit 用户:
然后我们将使用 bin/stop 命令停止 Server CE/Server Pro 和 MongoDB 实例, 在 MONGO_VERSION=7.0 中设置 config/overleaf.rc,然后使用 mongo 服务并使用 bin/up mongo) 来验证更新是否顺利完成。
最后,我们将把 Server CE/Server Pro 镜像版本更新到目标版本并使用 bin/up -d 命令重新创建所有服务。
示例:将 MongoDB 从 7.0 直接升级到 8.0 (Toolkit 用户)
首先确保您正在运行 MongoDB 7.0 使用 mongod --version 上面的命令。
根据 升级说明,唯一的要求是将 featureCompatibilityVersion 设置为 7.0。我们通过打开 MongoDB shell 并运行命令来执行此操作 db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })。请注意,这现在需要额外的 confirm: true 参数。
然后我们将使用 bin/stop 命令停止 Server CE/Server Pro 和 MongoDB 实例, 在 MONGO_VERSION=8.0 中设置 config/overleaf.rc,然后使用 mongo 服务并使用 bin/up mongo) 来验证更新是否顺利完成。
最后,我们将把 Server CE/Server Pro 镜像版本更新到目标版本并使用 bin/up -d 命令重新创建所有服务。
Docker compose 用户等效命令
对于 docker compose 用户,等效命令为:
docker compose exec mongo mongod --version用于显示 mongo 版本docker compose exec mongo mongosh用于启动用于管理命令的 mongo shelldocker compose stop停止服务器的命令编辑
docker-compose.yml文件以使用image: mongo:6.0以升级 mongo 版本docker compose up mongo以重启 mongo 服务并验证更新是否顺利完成编辑
docker-compose.yml文件以使用image: sharelatex:VERSION以升级镜像版本docker compose up以重新创建所有服务。
创建自定义角色
在版本 5.5.1中,我们引入了一个启动检查来验证 MongoDB 的特性兼容性版本。如果您的 MongoDB 数据库使用身份验证(例如,基本认证),则 sharelatex 容器可能无法启动,显示“未被授权在 admin 上执行命令” 的权限错误。
为了解决此问题,您可以根据以下说明在 MongoDB 中创建一个新角色并将其分配给用于访问数据库的用户帐户,或者设置 ALLOW_MONGO_ADMIN_CHECK_FAILURES=true 以允许检查失败而不阻止部署启动。
此新角色 仅 授予读取整个集群 MongoDB 服务器参数的权限,并可重复用于监控用途,
最后更新于