> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-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` оболонка має одразу вивести поточну версію.

Користувачі 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 -> Виконати міграцію повної історії проєкту -> 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 shell і виконавши вказану команду:

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

```bash
bin/mongo
# версія MongoDB shell 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 shell і виконавши команду `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 shell і виконавши команду `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 shell для команд адміністратора
* `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 shell
# Запустіть 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://ayakaleaf-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.
