> 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/pl/utrzymanie/updating-mongodb.md).

# Aktualizacja MongoDB

{% hint style="info" %}
Każde nowe wydanie Server CE/Server Pro będzie wskazywać wszelkie zmiany dotyczące obsługiwanej wersji MongoDB w swoich [informacjach o wydaniu](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Czy powinienem zaktualizować MongoDB?

Powinieneś **tylko** rozważyć aktualizację swojej wersji MongoDB, jeśli planujesz uaktualnić swoją instancję Server CE/Server Pro.

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

{% hint style="warning" %}
Nigdy nie powinieneś obniżać wersji MongoDB.
{% endhint %}

Jeśli napotkasz konkretny problem, który Twoim zdaniem może być związany z Twoją obecną wersją MongoDB, śmiało [utwórz zgłoszenie](https://github.com/overleaf/overleaf/issues) jeśli jesteś użytkownikiem Server CE lub skontaktuj się z pomocą techniczną Overleaf, jeśli jesteś użytkownikiem Server Pro.

### Sprawdzanie wersji MongoDB

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

Użytkownicy Overleaf Toolkit:

```bash
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
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 Twojej instancji Server CE/Server Pro przebiega następująco:

1. Zdecyduj, do której wersji Server CE/Server Pro planujesz uaktualnić.
2. Znajdź wersję MongoDB zalecaną przez to konkretne wydanie Overleaf Server CE/Server Pro.
3. Postępuj zgodnie z instrukcjami, aby uaktualnić MongoDB do wersji docelowej.
4. Zaktualizuj wersję obrazu Server CE/Server Pro i uruchom ponownie instancję.

Naszą rekomendacją jest zawsze aktualizować **Server CE/Server Pro** do najnowszej dostępnej wersji, ponieważ zawsze masz gwarancję wsparcia (dotyczy wyłącznie użytkowników Server Pro).

{% hint style="danger" %}
Podczas aktualizacji Server CE/Pro zalecamy uaktualnienie do najnowszego wydania wdrożonej wersji głównej **przed** uaktualnieniem do najnowszego wydania **następnej** wersji głównej. Jeśli Twoje wdrożenie jest o więcej niż jedną wersję główną za najnowszą, będziesz musiał przeprowadzić wieloetapową aktualizację.

Na przykład, jeśli używasz 3.5.10, będziesz musiał uaktualnić do 3.5.13 -> wykonać migrację Full Project History -> 4.2.9 -> 5.5.4.

Powinieneś **nigdy** pomijać wersji głównych (3.5.10 -> 5.5.4). Jeśli korzystasz z Toolkit i jesteś o więcej niż jedną wersję główną za najnowszą, musisz **nie** użyć `bin/upgrade` skryptu, ponieważ będziesz musiał przeprowadzić ręczną wieloetapową aktualizację.
{% endhint %}

{% hint style="warning" %}
Ważne jest, aby upewnić się, że wykonasz [spójną kopię zapasową](/on-premises/pl/utrzymanie/data-and-backups.md#performing-a-consistent-backup) **przed** przy każdej aktualizacji do wersji głównej, aby umożliwić cofnięcie zmian, jeśli będzie to konieczne.
{% endhint %}

#### Informacje o obsłudze wersji

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

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">Wersja MongoDB</th><th align="center">Minimalna wersja zgodności funkcji</th><th align="center">Maksymalna wersja obsługiwana przez sterownik 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 do 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" %}
Powyższa minimalna wersja zgodności funkcji opiera się na odpowiedniej wersji MongoDB zalecanej do użycia z pokazanym wydaniem Overleaf. Jeśli planujesz użyć wyższej wersji, MongoDB będzie miało własny minimalny wymóg.
{% endhint %}

Możesz zobaczyć tabelę zgodności, która określa obsługiwane wersje sterownika MongoDB Node.js do użycia z MongoDB [tutaj](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Możesz sprawdzić status zakończenia wsparcia dla każdej wersji MongoDB [tutaj](https://endoflife.date/mongodb).

#### Aktualizacja MongoDB

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

{% hint style="info" %}
MongoDB używa parzystych numerów dla swoich stabilnych wersji.
{% endhint %}

#### **Instrukcje aktualizacji podczas uruchamiania MongoDB poza Dockerem**

Oto linki do instrukcji aktualizacji z mongodb.com podczas uaktualniania MongoDB.

* [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)

{% hint style="info" %}
Instrukcje dla `5.0` i wyższych wskazują na instalację zestawu replik, a nie na tryb samodzielny. Ponieważ Server Pro/CE 4.0.1+ używa transakcji, MongoDB musi być uruchomione jako zestaw replik.
{% endhint %}

{% hint style="warning" %}
Dokumentacja dla MongoDB 3.2 do 4.2 jest teraz dostępna poprzez <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Podstawowe instrukcje**

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

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

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

Zacznijmy od upewnienia się, że uruchomiona jest MongoDB `6.0`:

Użytkownicy Overleaf Toolkit:

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

Użytkownicy Docker Compose:

```bash
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, aby mieć `featureCompatibilityVersion` ustawione na `5.0`. Robimy to, otwierając powłokę MongoDB i uruchamiając wskazaną komendę:

Użytkownicy Overleaf Toolkit:

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

{% hint style="info" %}
Użytkownicy Docker Compose mogą uruchomić `docker compose exec mongo mongosh` aby uzyskać powłokę i wykonać te same polecenia co użytkownicy Toolkit.
{% endhint %}

Użytkownicy Overleaf Toolkit:

Następnie zatrzymamy instancje Server CE/Server Pro i MongoDB za pomocą `bin/stop` polecenia, ustawimy `MONGO_VERSION=6.0` w `config/overleaf.rc`, a następnie ponownie uruchomimy `mongo` usługę za pomocą `bin/up mongo`) aby sprawdzić, czy aktualizacja przebiegła pomyślnie.

Na koniec zaktualizujemy wersję obrazu Server CE/Server Pro do naszej wersji docelowej i odtworzymy wszystkie usługi za pomocą `bin/up -d` polecenia.

Użytkownicy Docker Compose:

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

Na koniec zaktualizujemy wersję obrazu Server CE/Server Pro do naszej wersji docelowej i odtworzymy wszystkie usługi za pomocą `docker compose up` polecenia.

**Przykład: Aktualizacja MongoDB z `6.0` do `7.0` (użytkownicy Toolkit)**

Zacznij od upewnienia się, że uruchomiona jest MongoDB `6.0` używając `mongod --version` powyższych poleceń.

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, aby mieć `featureCompatibilityVersion` ustawione na `6.0`. Robimy to, otwierając powłokę MongoDB i uruchamiając polecenie `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Użytkownicy Overleaf Toolkit:

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

Następnie zatrzymamy instancje Server CE/Server Pro i MongoDB za pomocą `bin/stop` polecenia, ustawimy `MONGO_VERSION=7.0` w `config/overleaf.rc`, a następnie ponownie uruchomimy `mongo` usługę za pomocą `bin/up mongo`) aby sprawdzić, czy aktualizacja przebiegła pomyślnie.

Na koniec zaktualizujemy wersję obrazu Server CE/Server Pro do naszej wersji docelowej i odtworzymy wszystkie usługi za pomocą `bin/up -d` polecenia.

**Przykład: Aktualizacja MongoDB z `7.0` do `8.0` (użytkownicy Toolkit)**

Zacznij od upewnienia się, że uruchomiona jest MongoDB `7.0` używając `mongod --version` powyższych poleceń.

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, aby mieć `featureCompatibilityVersion` ustawione na `7.0`. Robimy to, otwierając powłokę MongoDB i uruchamiając polecenie `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Zauważ, że teraz wymaga to dodatkowego `confirm: true` parametru.

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

Następnie zatrzymamy instancje Server CE/Server Pro i MongoDB za pomocą `bin/stop` polecenia, ustawimy `MONGO_VERSION=8.0` w `config/overleaf.rc`, a następnie ponownie uruchomimy `mongo` usługę za pomocą `bin/up mongo`) aby sprawdzić, czy aktualizacja przebiegła pomyślnie.

Na koniec zaktualizujemy wersję obrazu Server CE/Server Pro do naszej wersji docelowej i odtworzymy wszystkie usługi za pomocą `bin/up -d` polecenia.

#### 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` aby wyświetlić wersję mongo
* `docker compose exec mongo mongosh` aby uruchomić powłokę mongo do poleceń administracyjnych
* `docker compose stop` polecenie zatrzymujące serwer
* Edytuj [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) plik tak, aby używał `image: mongo:6.0` aby zaktualizować wersję mongo
* `docker compose up mongo` aby ponownie uruchomić usługę mongo i sprawdzić, czy aktualizacja przebiegła pomyślnie
* Edytuj [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) plik tak, aby używał `image: sharelatex:VERSION` aby zaktualizować wersję obrazu
* `docker compose up` aby odtworzyć wszystkie usługi.

### Tworzenie niestandardowej roli

W wersji `5.5.1`, wprowadziliśmy sprawdzenie podczas uruchamiania, aby zweryfikować wersję zgodności funkcji dla MongoDB. Jeśli Twoja baza danych MongoDB używa uwierzytelniania (np. podstawowego uwierzytelniania), `sharelatex` kontener może się nie uruchomić, wyświetlając komunikat o błędzie uprawnień "*not authorized on admin to execute command*".

Aby to rozwiązać, możesz albo utworzyć nową rolę w MongoDB i przypisać ją do konta użytkownika używanego do uzyskiwania dostępu do bazy danych, korzystając z poniższych instrukcji, albo ustawić `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` aby dopuścić niepowodzenie sprawdzenia bez blokowania uruchomienia wdrożenia.

{% hint style="success" %}
Ta nowa rola **tylko** przyznaje uprawnienie do odczytu parametrów serwera MongoDB w całym klastrze i może być ponownie użyta do celów monitorowania,
{% endhint %}

{% code overflow="wrap" %}

```bash
# Użytkownicy Toolkit
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# Przełącz się na bazę danych "admin" za pomocą
overleaf [direct: primary] sharelatex> use admin
przełączono na bazę danych admin
overleaf [direct: primary] admin> 

# Utwórz nową rolę z uprawnieniem do używania "getParamter". Skopiuj i wklej poniższą funkcję do powłoki i naciśnij klawisz Enter

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

# Przełącz się z powrotem na bazę danych "sharelatex" 
use sharelatex
przełączono na bazę danych sharelatex
overleaf [direct: primary] sharelatex> 

# Przypisz nową rolę "clusterParameterReader" do użytkownika bazy danych, kopiując i wklejając poniższą funkcję do powłoki i naciskając klawisz Enter 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Wpisz exit, a następnie naciśnij Enter, aby wyjść z powłoki MongoDB
# Uruchom bin/up -d, aby uruchomić stos wdrożeniowy
$ 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/pl/utrzymanie/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.
