Кожен новий випуск 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), а не автономного (standalone). Оскільки 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 на рівні кластера, і її можна повторно використовувати для цілей моніторингу,

