database更新 MongoDB

circle-info

任何新的 Server CE/Server Pro 版本发布都会在其中指出对 MongoDB 支持版本的任何更改, 发行说明arrow-up-right.

我应该更新 MongoDB 吗?

您应该 在计划升级您的 Server CE/Server Pro 实例时才考虑更新您的 MongoDB 版本。

如果您运行的 MongoDB 版本比当前(或目标)版本推荐的版本更新,则无需进行任何更改。

circle-exclamation

如果您遇到认为可能与当前 MongoDB 版本相关的具体问题,请随时 提交问题arrow-up-right 如果您是 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 版本的步骤如下:

  1. 决定您计划升级到的 Server CE/Server Pro 版本。

  2. 查找该特定 Overleaf Server CE/Server Pro 发行版推荐的 MongoDB 版本。

  3. 按照说明将 MongoDB 升级到目标版本。

  4. 升级 Server CE/Server Pro 镜像版本并重启实例。

我们的建议是始终将 Server CE/Server Pro 升级到最新可用版本,因为(仅对 Server Pro 用户)它始终保证受到支持。

triangle-exclamation
circle-exclamation

版本支持信息

如果您决定回到早期版本,此表显示了早期 Server CE/Server Pro 发行版推荐的 MongoDB 版本,但您应该 绝对不要 不要降级您的 MongoDB 版本。

Server CE/Server Pro
MongoDB 版本
最低特性兼容性版本
Node.js 驱动支持的最高版本

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

triangle-exclamation

您可以查看兼容性表,该表指定与 MongoDB 一起使用的 MongoDB Node.js 驱动的受支持版本 这里arrow-up-right.

您可以查看每个 MongoDB 版本的生命周期终止状态 这里arrow-up-right.

升级 MongoDB

MongoDB 需要 逐步升级。这意味着您不能直接从,例如 4.0 直接升级到 5.0。您需要先更新 4.2 直接升级到 4.4,然后再更新 5.0.

circle-info

MongoDB 使用偶数作为其稳定版本号。

在 Docker 外运行 MongoDB 时的更新说明

以下是来自 mongodb.com 的升级 MongoDB 时的更新说明链接。

circle-info

升级的说明 5.0 及更高版本指向副本集安装,而不是独立实例。由于 Server Pro/CE 4.0.1+ 使用事务,MongoDB 需要以副本集模式运行。

circle-exclamation

基本说明

在大多数情况下,更新需要在实际更新 mongo 版本之前设置兼容性标志。步骤如下:

  1. 按照 MongoDB 发布说明中描述的方式设置兼容性标志(见下方示例)。

  2. 然后更新 mongo 镜像:

    1. Toolkit 用户 更新 MONGO_VERSION中的值,例如 MONGO_VERSION=6.0

    2. Docker Compose 用户 更新 mongo 镜像标签, 例如: services -> mongo -> image: mongo:6.0;

示例:将 MongoDB 从 5.0 直接升级到 6.0

让我们首先确保我们正在运行 MongoDB 6.0:

Overleaf Toolkit 用户:

Docker Compose 用户:

根据 升级说明arrow-up-right,唯一的要求是将 featureCompatibilityVersion 设置为 5.0。我们通过打开 MongoDB shell 并运行所示命令来执行此操作:

Overleaf Toolkit 用户:

circle-info

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.ymlarrow-up-right 文件以使用 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 上面的命令。

根据 升级说明arrow-up-right,唯一的要求是将 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 上面的命令。

根据 升级说明arrow-up-right,唯一的要求是将 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 shell

  • docker compose stop 停止服务器的命令

  • 编辑 docker-compose.ymlarrow-up-right 文件以使用 image: mongo:6.0 以升级 mongo 版本

  • docker compose up mongo 以重启 mongo 服务并验证更新是否顺利完成

  • 编辑 docker-compose.ymlarrow-up-right 文件以使用 image: sharelatex:VERSION 以升级镜像版本

  • docker compose up 以重新创建所有服务。

创建自定义角色

在版本 5.5.1中,我们引入了一个启动检查来验证 MongoDB 的特性兼容性版本。如果您的 MongoDB 数据库使用身份验证(例如,基本认证),则 sharelatex 容器可能无法启动,显示“未被授权在 admin 上执行命令” 的权限错误。

为了解决此问题,您可以根据以下说明在 MongoDB 中创建一个新角色并将其分配给用于访问数据库的用户帐户,或者设置 ALLOW_MONGO_ADMIN_CHECK_FAILURES=true 以允许检查失败而不阻止部署启动。

circle-check

最后更新于