> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Aktualizacja MongoDB

<Info>
  Każde nowe wydanie Server CE/Server Pro informuje w [informacjach o wydaniu](https://docs.overleaf.com/on-premises/release-notes) o wszelkich zmianach obsługiwanej wersji MongoDB.
</Info>

### Czy powinienem zaktualizować MongoDB?

Aktualizację wersji MongoDB należy rozważać **wyłącznie** wtedy, gdy planujesz aktualizację instancji Server CE/Server Pro.

Jeśli używasz wersji MongoDB nowszej niż zalecana dla Twojej bieżącej (lub docelowej) wersji, nie musisz wprowadzać żadnych zmian.

<Warning>
  Nigdy nie należy obniżać wersji MongoDB.
</Warning>

Jeśli napotkasz konkretny problem, który Twoim zdaniem może być związany z bieżącą wersją MongoDB, możesz [zgłosić problem](https://github.com/overleaf/overleaf/issues), jeśli korzystasz z Server CE, lub skontaktować się z pomocą techniczną Overleaf, jeśli korzystasz z Server Pro.

### Sprawdzanie wersji MongoDB

Otwarcie powłoki `mongo` powinno od razu wyświetlić bieżącą wersję.

Użytkownicy Overleaf Toolkit:

```bash theme={null}
bin/docker-compose exec mongo mongod --version
db version v5.0.24
Build Info: {
    "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"
    }
}
```

Użytkownicy Docker Compose:

```bash theme={null}
docker compose exec mongo mongod --version
db version v5.0.24
Build Info: {
    "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"
    }
}

```

### Proces aktualizacji

Aktualizacja wersji MongoDB podczas aktualizacji instancji Server CE/Server Pro przebiega następująco:

1. Zdecyduj, do której wersji Server CE/Server Pro chcesz zaktualizować system.
2. Znajdź wersję MongoDB zalecaną dla tego konkretnego wydania Overleaf Server CE/Server Pro.
3. Postępuj zgodnie z instrukcjami, aby zaktualizować MongoDB do wersji docelowej.
4. Zaktualizuj wersję obrazu Server CE/Server Pro i uruchom ponownie instancję.

Zalecamy zawsze aktualizować **Server CE/Server Pro** do najnowszej dostępnej wersji, ponieważ jej wsparcie jest zawsze gwarantowane (dotyczy tylko użytkowników Server Pro).

<Danger>
  Podczas aktualizacji Server CE/Pro zalecamy zaktualizowanie systemu do najnowszego wydania wdrożonej wersji głównej, **zanim** przejdziesz do najnowszego wydania **kolejnej** wersji głównej. Jeśli Twoje wdrożenie jest opóźnione o więcej niż jedną wersję główną względem najnowszej, konieczna będzie aktualizacja wieloetapowa.

  Na przykład, jeśli używasz wersji 3.5.10, musisz zaktualizować system do 3.5.13 -> przeprowadzić migrację pełnej historii projektów -> 4.2.9 -> 5.5.4.

  **Nigdy** nie pomijaj wersji głównych (3.5.10 -> 5.5.4). Jeśli używasz Toolkitu i jesteś opóźniony o więcej niż jedną wersję główną względem najnowszej, **nie** możesz używać skryptu `bin/upgrade`, ponieważ musisz przeprowadzić ręczną aktualizację wieloetapową.
</Danger>

<Warning>
  Przed każdą aktualizacją wersji głównej koniecznie wykonaj [spójną kopię zapasową](/pl/on-premises/maintenance/data-and-backups#performing-a-consistent-backup), aby w razie potrzeby móc wycofać zmiany.
</Warning>

#### Informacje o obsługiwanych wersjach

Jeśli zdecydujesz się na wcześniejszą wersję, ta tabela pokazuje zalecaną wersję MongoDB dla wcześniejszych wydań Server CE/Server Pro, ale **nigdy** nie należy obniżać wersji MongoDB.

<div style={{ overflowX: "auto" }}><table style={{ display: "table", width: "100%" }}><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" style={{ textAlign: "center" }}>Wersja MongoDB</th><th style={{ textAlign: "center" }}>Minimalna wersja zgodności funkcji</th><th style={{ textAlign: "center" }}>Maksymalna wersja obsługiwana przez sterownik Node.js</th></tr></thead><tbody><tr><td>2.0.x</td><td style={{ textAlign: "center" }}>3.4</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>2.1.x do 2.4.x</td><td style={{ textAlign: "center" }}>3.6</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=2.5.0</td><td style={{ textAlign: "center" }}>4.0</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=3.1.0</td><td style={{ textAlign: "center" }}>4.2</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=3.2.0</td><td style={{ textAlign: "center" }}>4.4</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=4.2.0</td><td style={{ textAlign: "center" }}>5.0</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=5.1.0</td><td style={{ textAlign: "center" }}>6.0</td><td style={{ textAlign: "center" }}>-</td><td style={{ textAlign: "center" }}>-</td></tr><tr><td>>=5.3.1</td><td style={{ textAlign: "center" }}>6.0</td><td style={{ textAlign: "center" }}>5.0</td><td style={{ textAlign: "center" }}>8.0</td></tr><tr><td>>=5.5.0</td><td style={{ textAlign: "center" }}>6.0</td><td style={{ textAlign: "center" }}>6.0</td><td style={{ textAlign: "center" }}>8.0</td></tr><tr><td>6.0.0</td><td style={{ textAlign: "center" }}>8.0</td><td style={{ textAlign: "center" }}>8.0</td><td style={{ textAlign: "center" }}>8.0</td></tr></tbody></table></div>

<Danger>
  Powyższa minimalna wersja zgodności funkcji opiera się na wersji MongoDB zalecanej do użytku z podaną wersją Overleaf. Jeśli planujesz użyć wyższej wersji, MongoDB będzie miało własne minimalne wymagania.
</Danger>

Tabelę zgodności określającą wersje sterownika MongoDB Node.js obsługiwane z poszczególnymi wersjami MongoDB znajdziesz [tutaj](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Status zakończenia wsparcia każdej wersji MongoDB znajdziesz [tutaj](https://endoflife.date/mongodb).

#### Aktualizacja MongoDB

MongoDB wymaga **aktualizacji krok po kroku**. Oznacza to, że nie można przejść bezpośrednio, powiedzmy, z `4.0` do `5.0`. Najpierw trzeba zaktualizować `4.2` do `4.4`, a następnie do `5.0`.

<Info>
  MongoDB używa liczb parzystych dla wersji stabilnych.
</Info>

#### **Instrukcje aktualizacji przy uruchamianiu MongoDB poza Dockerem**

Poniżej znajdują się linki do instrukcji aktualizacji MongoDB z witryny mongodb.com.

* [Informacje o wydaniu MongoDB — aktualizacja MongoDB z `4.2` do `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [Informacje o wydaniu MongoDB — aktualizacja MongoDB z `4.4` do `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [Informacje o wydaniu MongoDB — aktualizacja MongoDB z `5.0` do `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [Informacje o wydaniu MongoDB — aktualizacja MongoDB z `6.0` do `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [Informacje o wydaniu MongoDB — aktualizacja MongoDB z `7.0` do `8.0`](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set)

<Info>
  Instrukcje dla wersji `5.0` i wyższych dotyczą instalacji w postaci zestawu replik (replica set), a nie instalacji samodzielnej. Ponieważ Server Pro/CE 4.0.1+ korzysta z transakcji, MongoDB musi działać jako zestaw replik.
</Info>

<Warning>
  Dokumentacja MongoDB w wersjach od 3.2 do 4.2 jest teraz dostępna pod adresem [https://www.mongodb.com/docs/legacy/](https://www.mongodb.com/docs/legacy/)
</Warning>

**Podstawowe instrukcje**

W większości przypadków aktualizacja wymaga ustawienia flagi zgodności przed faktyczną zmianą wersji mongo. Kroki są następujące:

1. Ustaw flagę zgodności zgodnie z opisem w informacjach o wydaniu MongoDB (patrz przykłady poniżej).
2. Następnie zaktualizuj obraz mongo:
   1. **Użytkownicy Toolkitu**: zaktualizuj `MONGO_VERSION`, np. `MONGO_VERSION=6.0`
   2. **Użytkownicy Docker Compose**: zaktualizuj wersję w tagu obrazu `mongo`,\
      np. `services -> mongo -> image: mongo:6.0`;

**Przykład: aktualizacja MongoDB z `5.0` do `6.0`**

Zacznijmy od upewnienia się, że używamy MongoDB `6.0`:

Użytkownicy Overleaf Toolkit:

```bash theme={null}
bin/docker-compose exec mongo mongod --version
# db version v5.0.24
```

Użytkownicy Docker Compose:

```bash theme={null}
docker compose exec mongo mongod --version
# db version v5.0.24
```

Zgodnie z [instrukcjami aktualizacji](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path) jedynym wymaganiem jest ustawienie `featureCompatibilityVersion` na `5.0`. Robimy to, otwierając powłokę MongoDB i uruchamiając wskazane polecenie:

Użytkownicy Overleaf Toolkit:

```bash theme={null}
bin/mongo
# MongoDB shell version v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

<Info>
  Użytkownicy Docker Compose mogą uruchomić `docker compose exec mongo mongosh`, aby otworzyć powłokę i wykonać te same polecenia co użytkownicy Toolkitu.
</Info>

Użytkownicy Overleaf Toolkit:

Następnie zatrzymujemy instancje Server CE/Server Pro i MongoDB poleceniem `bin/stop`, ustawiamy `MONGO_VERSION=6.0` w pliku `config/overleaf.rc` i ponownie uruchamiamy usługę `mongo` za pomocą `bin/up mongo`, aby sprawdzić, czy aktualizacja przebiegła pomyślnie.

Na koniec aktualizujemy wersję obrazu Server CE/Server Pro do wersji docelowej i odtwarzamy wszystkie usługi poleceniem `bin/up -d`.

Użytkownicy Docker Compose:

Następnie zatrzymujemy instancje Server CE/Server Pro i MongoDB poleceniem `docker compose stop`, aktualizujemy plik [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) tak, aby używał `image: mongo:6.0`, a potem ponownie uruchamiamy usługę `mongo` poleceniem `docker compose up mongo`, aby sprawdzić, czy aktualizacja przebiegła pomyślnie.

Na koniec aktualizujemy wersję obrazu Server CE/Server Pro do wersji docelowej i odtwarzamy wszystkie usługi poleceniem `docker compose up`.

<strong>Przykład: aktualizacja MongoDB z `6.0` do `7.0` (użytkownicy Toolkitu)</strong>

Zacznij od upewnienia się, że używasz MongoDB `6.0`, korzystając z powyższych poleceń `mongod --version`.

Zgodnie z [instrukcjami aktualizacji](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set) jedynym wymaganiem jest ustawienie `featureCompatibilityVersion` na `6.0`. Robimy to, otwierając powłokę MongoDB i uruchamiając polecenie `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Użytkownicy Overleaf Toolkit:

```bash theme={null}
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

Następnie zatrzymujemy instancje Server CE/Server Pro i MongoDB poleceniem `bin/stop`, ustawiamy `MONGO_VERSION=7.0` w pliku `config/overleaf.rc` i ponownie uruchamiamy usługę `mongo` za pomocą `bin/up mongo`, aby sprawdzić, czy aktualizacja przebiegła pomyślnie.

Na koniec aktualizujemy wersję obrazu Server CE/Server Pro do wersji docelowej i odtwarzamy wszystkie usługi poleceniem `bin/up -d`.

<strong>Przykład: aktualizacja MongoDB z `7.0` do `8.0` (użytkownicy Toolkitu)</strong>

Zacznij od upewnienia się, że używasz MongoDB `7.0`, korzystając z powyższych poleceń `mongod --version`.

Zgodnie z [instrukcjami aktualizacji](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set) jedynym wymaganiem jest ustawienie `featureCompatibilityVersion` na `7.0`. Robimy to, otwierając powłokę MongoDB i uruchamiając polecenie `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Pamiętaj, że wymaga to teraz dodatkowego parametru `confirm: true`.

```bash theme={null}
bin/mongo
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

Następnie zatrzymujemy instancje Server CE/Server Pro i MongoDB poleceniem `bin/stop`, ustawiamy `MONGO_VERSION=8.0` w pliku `config/overleaf.rc` i ponownie uruchamiamy usługę `mongo` za pomocą `bin/up mongo`, aby sprawdzić, czy aktualizacja przebiegła pomyślnie.

Na koniec aktualizujemy wersję obrazu Server CE/Server Pro do wersji docelowej i odtwarzamy wszystkie usługi poleceniem `bin/up -d`.

#### Równoważne polecenia dla użytkowników Docker Compose

Dla użytkowników Docker Compose równoważne polecenia to:

* `docker compose exec mongo mongod --version` — wyświetla wersję mongo
* `docker compose exec mongo mongosh` — uruchamia powłokę mongo do wykonywania poleceń administracyjnych
* `docker compose stop` — zatrzymuje serwer
* Edytuj plik [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml), aby używał `image: mongo:6.0` i w ten sposób zaktualizować wersję mongo
* `docker compose up mongo` — ponownie uruchamia usługę mongo i pozwala sprawdzić, czy aktualizacja przebiegła pomyślnie
* Edytuj plik [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml), aby używał `image: sharelatex:VERSION` i w ten sposób zaktualizować wersję obrazu
* `docker compose up` — odtwarza wszystkie usługi.

### Tworzenie roli niestandardowej

W wersji `5.5.1` wprowadziliśmy sprawdzanie przy uruchomieniu, które weryfikuje wersję zgodności funkcji MongoDB. Jeśli Twoja baza danych MongoDB korzysta z uwierzytelniania (np. uwierzytelniania podstawowego), kontener `sharelatex` może się nie uruchomić i wyświetlić błąd uprawnień "*not authorized on admin to execute command*".

Aby rozwiązać ten problem, możesz utworzyć w MongoDB nową rolę i przypisać ją do konta użytkownika używanego do dostępu do bazy danych zgodnie z poniższymi instrukcjami albo ustawić `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true`, aby niepowodzenie sprawdzenia nie blokowało uruchomienia wdrożenia.

<Check>
  Ta nowa rola nadaje uprawnienia **wyłącznie** do odczytu parametrów serwera MongoDB na poziomie całego klastra i może być ponownie wykorzystana do celów monitorowania.
</Check>

```bash wrap theme={null}
# Toolkit users
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# Switch to the "admin" database using
overleaf [direct: primary] sharelatex> use admin
switched to db admin
overleaf [direct: primary] admin> 

# Create a new role with permission to use "getParamter". Copy and paste the function below into the shell and press the return key

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

# Switch back to the "sharelatex" database 
use sharelatex
switched to db sharelatex
overleaf [direct: primary] sharelatex> 

# Assign the new "clusterParameterReader" role to your database user by copy and pasting the function below into the shell and press the return key 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Type exit then return to exit the MongoDB shell
# Run bin/up -d to start the deployment stack
$ bin/up -d
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.