В примечаниях к выпуску каждого нового выпуска Server CE/Server Pro указываются все изменения поддерживаемой версии MongoDB.
Нужно ли обновлять MongoDB?
Обновлять версию MongoDB следует рассматривать только в том случае, если вы планируете обновить свой экземпляр Server CE/Server Pro. Если вы используете версию MongoDB новее рекомендованной для вашей текущей (или целевой) версии, ничего менять не нужно. Если вы столкнулись с конкретной проблемой, которая, по вашему мнению, может быть связана с текущей версией MongoDB, вы можете создать issue, если вы пользователь Server CE, или обратиться в службу поддержки Overleaf, если вы пользователь Server Pro.Проверка версии MongoDB
При открытии оболочкиmongo текущая версия выводится сразу.
Пользователи Overleaf Toolkit:
Процесс обновления
Обновление версии MongoDB при обновлении экземпляра Server CE/Server Pro выполняется следующим образом:- Определите версию Server CE/Server Pro, до которой планируете обновиться.
- Найдите версию MongoDB, рекомендованную для этого конкретного выпуска Overleaf Server CE/Server Pro.
- Следуя инструкциям, обновите MongoDB до целевой версии.
- Обновите версию образа Server CE/Server Pro и перезапустите экземпляр.
При обновлении Server CE/Pro мы рекомендуем сначала обновиться до последнего выпуска развёрнутой мажорной версии, прежде чем переходить на последний выпуск следующей мажорной версии. Если ваше развёртывание отстаёт от последней версии более чем на одну мажорную версию, потребуется многоэтапное обновление.Например, если у вас версия 3.5.10, нужно обновиться до 3.5.13 -> выполнить миграцию полной истории проектов (Full Project History) -> 4.2.9 -> 5.5.4.Никогда не пропускайте мажорные версии (3.5.10 -> 5.5.4). Если вы используете Toolkit и отстаёте от последней версии более чем на одну мажорную версию, не используйте скрипт
bin/upgrade, так как вам потребуется выполнить многоэтапное обновление вручную.Сведения о поддержке версий
Если вы решите перейти на более раннюю версию, в этой таблице приведены рекомендуемые версии MongoDB для более ранних выпусков Server CE/Server Pro, однако никогда не понижайте версию 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 |
Указанная выше минимальная версия совместимости функций основана на версии MongoDB, рекомендованной для использования с указанной версией Overleaf. Если вы планируете использовать более новую версию, у MongoDB будут собственные минимальные требования.
Обновление MongoDB
MongoDB требует пошагового обновления. Это значит, что нельзя перейти напрямую, скажем, с4.0 на 5.0. Сначала нужно обновиться с 4.2 до 4.4, а затем до 5.0.
Стабильные версии MongoDB имеют чётные номера.
Инструкции по обновлению при запуске MongoDB вне Docker
Ниже приведены ссылки на инструкции по обновлению MongoDB с сайта mongodb.com.- Примечания к выпуску MongoDB — обновление MongoDB с
4.2до4.4 - Примечания к выпуску MongoDB — обновление MongoDB с
4.4до5.0 - Примечания к выпуску MongoDB — обновление MongoDB с
5.0до6.0 - Примечания к выпуску MongoDB — обновление MongoDB с
6.0до7.0 - Примечания к выпуску MongoDB — обновление MongoDB с
7.0до8.0
Инструкции для
5.0 и выше относятся к установке в виде набора реплик (replica set), а не автономной установке. Поскольку Server Pro/CE 4.0.1+ использует транзакции, MongoDB необходимо запускать как набор реплик.- Установите флаг совместимости, как описано в примечаниях к выпуску MongoDB (см. примеры ниже).
- Затем обновите образ mongo:
- Пользователи Toolkit: обновите
MONGO_VERSION, напримерMONGO_VERSION=6.0 - Пользователи Docker Compose: обновите тег версии образа
mongo,
напримерservices -> mongo -> image: mongo:6.0;
- Пользователи Toolkit: обновите
5.0 до 6.0
Для начала убедимся, что используется MongoDB 6.0:
Пользователи Overleaf Toolkit:
featureCompatibilityVersion было установлено значение 5.0. Для этого откроем оболочку MongoDB и выполним указанную команду:
Пользователи Overleaf Toolkit:
Пользователи Docker Compose могут выполнить
docker compose exec mongo mongosh, чтобы открыть оболочку, и выполнить те же команды, что и пользователи Toolkit.bin/stop, зададим MONGO_VERSION=6.0 в config/overleaf.rc и перезапустим сервис mongo с помощью bin/up mongo), чтобы убедиться, что обновление прошло без проблем.
Наконец, обновим версию образа Server CE/Server Pro до целевой и пересоздадим все сервисы командой bin/up -d.
Пользователи Docker Compose:
Затем остановим экземпляры Server CE/Server Pro и MongoDB командой 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, с помощью приведённых выше команд mongod --version.
Согласно инструкциям по обновлению, единственное требование — чтобы для featureCompatibilityVersion было установлено значение 6.0. Для этого откроем оболочку MongoDB и выполним команду db.adminCommand({ setFeatureCompatibilityVersion: "6.0" }).
Пользователи Overleaf Toolkit:
bin/stop, зададим MONGO_VERSION=7.0 в config/overleaf.rc и перезапустим сервис mongo с помощью bin/up mongo), чтобы убедиться, что обновление прошло без проблем.
Наконец, обновим версию образа Server CE/Server Pro до целевой и пересоздадим все сервисы командой bin/up -d.
Сначала убедитесь, что используется MongoDB 7.0, с помощью приведённых выше команд mongod --version.
Согласно инструкциям по обновлению, единственное требование — чтобы для featureCompatibilityVersion было установлено значение 7.0. Для этого откроем оболочку MongoDB и выполним команду db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true }). Обратите внимание, что теперь требуется дополнительный параметр confirm: true.
bin/stop, зададим 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— вывести версию mongodocker compose exec mongo mongosh— запустить оболочку mongo для административных командdocker 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 может не запуститься и вывести ошибку прав доступа “not authorized on admin to execute command”.
Чтобы решить эту проблему, можно либо создать в MongoDB новую роль и назначить её учётной записи пользователя, используемой для доступа к базе данных, следуя инструкциям ниже, либо задать ALLOW_MONGO_ADMIN_CHECK_FAILURES=true, чтобы проверка могла завершиться неудачей, не препятствуя запуску развёртывания.
Эта новая роль предоставляет только право на чтение параметров сервера MongoDB на уровне кластера и может повторно использоваться для целей мониторинга,

