> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/uk/obslugovuvannya/updating-mongodb.md).

# Оновлення MongoDB

{% hint style="info" %}
Будь-який новий випуск Server CE/Server Pro вказуватиме на будь-яку зміну підтримуваної версії MongoDB у своїх [примітках до випуску](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Чи слід оновлювати MongoDB?

Вам слід **лише** розглядати оновлення версії MongoDB, якщо ви плануєте оновити свій екземпляр Server CE/Server Pro.

Якщо ви використовуєте версію MongoDB новішу за рекомендовану для вашої поточної (або цільової) версії, жодних змін робити не потрібно.

{% hint style="warning" %}
Ніколи не слід знижувати версію MongoDB.
{% endhint %}

Якщо ви зіткнетеся з конкретною проблемою, яку, на вашу думку, може бути пов’язано з вашою поточною версією MongoDB, сміливо [створіть запит на проблему](https://github.com/overleaf/overleaf/issues) якщо ви користувач Server CE або зверніться до підтримки Overleaf, якщо ви користувач Server Pro.

### Перевірка версії MongoDB

Відкриття `mongo` shell має одразу вивести поточну версію.

Користувачі Overleaf Toolkit:

```bash
bin/docker-compose exec mongo mongod --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:

```bash
docker compose exec mongo mongod --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"
    }
}

```

### Процес оновлення

Оновлення версії MongoDB під час оновлення вашого екземпляра Server CE/Server Pro відбувається так:

1. Визначте версію Server CE/Server Pro, до якої ви плануєте оновитися.
2. Знайдіть версію MongoDB, рекомендовану для цієї конкретної версії Overleaf Server CE/Server Pro.
3. Дотримуйтесь інструкцій, щоб оновити MongoDB до цільової версії.
4. Оновіть версію образу Server CE/Server Pro і перезапустіть екземпляр.

Ми рекомендуємо завжди оновлювати **Server CE/Server Pro** до найновішої доступної версії, оскільки її підтримку завжди гарантовано (лише для користувачів Server Pro).

{% hint style="danger" %}
Під час оновлення 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` цей сценарій, оскільки вам потрібно буде виконати ручне багатокрокове оновлення.
{% endhint %}

{% hint style="warning" %}
Важливо переконатися, що ви створили [узгоджену резервну копію](/on-premises/uk/obslugovuvannya/data-and-backups.md#performing-a-consistent-backup) **перед** для кожного оновлення основної версії, щоб мати змогу відкотитися, якщо це буде потрібно.
{% endhint %}

#### Інформація про підтримку версій

Якщо ви вирішите перейти на попередню версію, ця таблиця показує рекомендовану версію MongoDB для попередніх випусків Server CE/Server Pro, але ви повинні **ніколи** знижувати версію MongoDB.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">Версія MongoDB</th><th align="center">Мінімальна версія сумісності функцій</th><th align="center">Максимальна версія, підтримувана драйвером Node.js</th></tr></thead><tbody><tr><td>2.0.x</td><td align="center">3.4</td><td align="center">-</td><td align="center">-</td></tr><tr><td>2.1.x до 2.4.x</td><td align="center">3.6</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=2.5.0</td><td align="center">4.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=3.1.0</td><td align="center">4.2</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=3.2.0</td><td align="center">4.4</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=4.2.0</td><td align="center">5.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=5.1.0</td><td align="center">6.0</td><td align="center">-</td><td align="center">-</td></tr><tr><td>>=5.3.1</td><td align="center">6.0</td><td align="center">5.0</td><td align="center">8.0</td></tr><tr><td>>=5.5.0</td><td align="center">6.0</td><td align="center">6.0</td><td align="center">8.0</td></tr><tr><td>6.0.0</td><td align="center">8.0</td><td align="center">8.0</td><td align="center">8.0</td></tr></tbody></table>

{% hint style="danger" %}
Наведена вище мінімальна версія сумісності функцій базується на відповідній рекомендованій версії MongoDB для використання з показаною версією Overleaf. Якщо ви плануєте використовувати вищу версію, для MongoDB діятиме власна мінімальна вимога.
{% endhint %}

Ви можете переглянути таблицю сумісності, яка визначає підтримувані версії драйвера MongoDB Node.js для використання з MongoDB [тут](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Ви можете переглянути статус завершення життєвого циклу для кожної версії MongoDB [тут](https://endoflife.date/mongodb).

#### Оновлення MongoDB

MongoDB вимагає **покрокових оновлень**. Це означає, що ви не можете перейти напряму, скажімо `4.0` до `5.0`. Спочатку потрібно оновити `4.2` до `4.4`, а потім `5.0`.

{% hint style="info" %}
MongoDB використовує парні числа для своїх стабільних версій.
{% endhint %}

#### **Інструкції з оновлення при запуску MongoDB поза Docker**

Ось посилання на інструкції з оновлення від mongodb.com для оновлення MongoDB.

* [Примітки до випуску MongoDB — оновлення MongoDB з `4.2` до `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [Примітки до випуску MongoDB — оновлення MongoDB з `4.4` до `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [Примітки до випуску MongoDB — оновлення MongoDB з `5.0` до `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [Примітки до випуску MongoDB — оновлення MongoDB з `6.0` до `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [Примітки до випуску MongoDB — оновлення MongoDB з `7.0` до `8.0`](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set)

{% hint style="info" %}
Інструкції для `5.0` і вище вказують на встановлення replica set, а не standalone. Оскільки Server Pro/CE 4.0.1+ використовує транзакції, MongoDB потрібно запускати як replica set.
{% endhint %}

{% hint style="warning" %}
Документація для MongoDB 3.2 до 4.2 тепер доступна через <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Базові інструкції**

У більшості випадків оновлення вимагає налаштування прапорця сумісності перед фактичним оновленням версії 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:

```bash
bin/docker-compose exec mongo mongod --version
# db version v5.0.24
```

Користувачі Docker Compose:

```bash
docker compose exec mongo mongod --version
# db version v5.0.24
```

Згідно з [інструкціями з оновлення](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), єдина вимога — мати `featureCompatibilityVersion` встановленим на `5.0`. Для цього відкрийте оболонку MongoDB і виконайте вказану команду:

Користувачі Overleaf Toolkit:

```bash
bin/mongo
# версія оболонки MongoDB v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# бувай
```

{% hint style="info" %}
Користувачі Docker Compose можуть виконати `docker compose exec mongo mongosh` щоб отримати оболонку та виконати ті самі команди, що й користувачі Toolkit.
{% endhint %}

Користувачі Overleaf Toolkit:

Далі ми зупинимо екземпляри Server CE/Server Pro і MongoDB за допомогою `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`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/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` команд вище.

Згідно з [інструкціями з оновлення](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), єдина вимога — мати `featureCompatibilityVersion` встановленим на `6.0`. Для цього відкрийте оболонку MongoDB і виконайте команду `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Користувачі Overleaf Toolkit:

```bash
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# бувай
```

Далі ми зупинимо екземпляри Server CE/Server Pro і MongoDB за допомогою `bin/stop` команди, встановимо `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` команд вище.

Згідно з [інструкціями з оновлення](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), єдина вимога — мати `featureCompatibilityVersion` встановленим на `7.0`. Для цього відкрийте оболонку MongoDB і виконайте команду `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Зверніть увагу, що тепер це вимагає додаткового `confirm: true` параметра.

```bash
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# бувай
```

Далі ми зупинимо екземпляри Server CE/Server Pro і MongoDB за допомогою `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` для відображення версії mongo
* `docker compose exec mongo mongosh` для запуску оболонки mongo для адміністративних команд
* `docker compose stop` команда для зупинки сервера
* Відредагуйте [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) файл, щоб використовувати `image: mongo:6.0` щоб оновити версію mongo
* `docker compose up mongo` для перезапуску служби mongo та перевірки, що оновлення пройшло успішно
* Відредагуйте [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/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` щоб дозволити перевірці завершитися з помилкою, не блокуючи запуск розгортання.

{% hint style="success" %}
Ця нова роль **лише** надає дозвіл на читання параметрів сервера MongoDB на рівні всього кластера і може бути повторно використана для моніторингу,
{% endhint %}

{% code overflow="wrap" %}

```bash
# Користувачі Toolkit
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# Перейдіть до бази даних "admin", використовуючи
overleaf [direct: primary] sharelatex> use admin
перемкнено на db admin
overleaf [direct: primary] admin> 

# Створіть нову роль із дозволом використовувати "getParamter". Скопіюйте та вставте функцію нижче в оболонку і натисніть клавішу Enter

db.createRole(
  {
    role: "clusterParameterReader",
    privileges: [
      {
        resource: { cluster: true },
        actions: ["getParameter"]    
      }
    ],
    roles: [] 
  }
);

# Поверніться назад до бази даних "sharelatex" 
use sharelatex
перемкнено на db sharelatex
overleaf [direct: primary] sharelatex> 

# Призначте нову роль "clusterParameterReader" вашому користувачу бази даних, скопіювавши та вставивши функцію нижче в оболонку і натиснувши клавішу Enter 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Введіть exit, а потім натисніть Enter, щоб вийти з оболонки MongoDB
# Запустіть bin/up -d, щоб запустити стек розгортання
$ bin/up -d
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/uk/obslugovuvannya/updating-mongodb.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
