> 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/pl/konserwacja/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 jego [informacjach o wydaniu](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Czy powinienem zaktualizować MongoDB?

Powinieneś **tylko** rozważyć aktualizację wersji MongoDB tylko wtedy, gdy 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 wystąpi konkretny problem, który Twoim zdaniem może być związany z Twoją bieżącą wersją MongoDB, śmiało [zgłoś problem](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` powinno od razu 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 uaktualniania instancji Server CE/Server Pro przebiega następująco:

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

Nasza rekomendacja jest taka, aby zawsze aktualizować **Server CE/Server Pro** do najnowszej dostępnej wersji, ponieważ zawsze jest gwarancja wsparcia (dotyczy tylko użytkowników Server Pro).

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

Na przykład, jeśli używasz 3.5.10, musisz zaktualizować do 3.5.13 -> wykonać migrację pełnej historii projektu -> 4.2.9 -> 5.5.4.

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

{% hint style="warning" %}
Ważne jest, aby upewnić się, że wykonujesz [spójną kopię zapasową](/on-premises/pl/konserwacja/data-and-backups.md#performing-a-consistent-backup) **przed** przy każdej aktualizacji głównej wersji, aby umożliwić powrót do poprzedniej wersji, jeśli będzie to potrzebne.
{% 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 powinieneś **nigdy** obniżyć wersję 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łasne minimalne wymagania.
{% endhint %}

Możesz zobaczyć tabelę zgodności określającą 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 końca 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, 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żej odnoszą się do instalacji repliki, zamiast do samodzielnej instancji. 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 przez <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Podstawowe instrukcje**

W większości przypadków aktualizacja wymaga wcześniejszego 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 uruchamiamy 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 ustawienie `featureCompatibilityVersion` na `5.0`. Robimy to, otwierając powłokę MongoDB i uruchamiając wskazane polecenie:

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, używając `bin/stop` polecenia, ustawimy `MONGO_VERSION=6.0` w `config/overleaf.rc`, a następnie uruchomimy ponownie `mongo` usługę, używając `bin/up mongo`) aby sprawdzić, czy aktualizacja przebiegła pomyślnie.

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

Użytkownicy Docker Compose:

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

Na koniec zaktualizujemy wersję obrazu Server CE/Server Pro do naszej docelowej wersji i odtworzymy wszystkie usługi, używając `docker compose up` polecenia.

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

Zacznij od upewnienia się, że uruchamiasz 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 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
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, używając `bin/stop` polecenia, ustawimy `MONGO_VERSION=7.0` w `config/overleaf.rc`, a następnie uruchomimy ponownie `mongo` usługę, używając `bin/up mongo`) aby sprawdzić, czy aktualizacja przebiegła pomyślnie.

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

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

Zacznij od upewnienia się, że uruchamiasz 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 ustawienie `featureCompatibilityVersion` na `7.0`. Robimy to, otwierając powłokę MongoDB i uruchamiając polecenie `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Zwróć uwagę, ż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, używając `bin/stop` polecenia, ustawimy `MONGO_VERSION=8.0` w `config/overleaf.rc`, a następnie uruchomimy ponownie `mongo` usługę, używając `bin/up mongo`) aby sprawdzić, czy aktualizacja przebiegła pomyślnie.

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

#### Równoważne polecenia dla użytkowników docker compose

Dla użytkowników docker compose odpowiednie 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, 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, 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 sprawdzanie uruchamiania w celu weryfikacji wersji 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 błąd uprawnień "*not authorized on admin to execute command*".

Aby to naprawić, możesz 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: [] 
  }
);

# Wróć do bazy 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 rozpocząć stos wdrożenia
$ 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/pl/konserwacja/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.
