> 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/on-premises-cs/udrzba/updating-mongodb.md).

# Aktualizace MongoDB

{% hint style="info" %}
Jakékoli nové vydání Server CE/Server Pro uvede ve svých jakoukoli změnu v podporované verzi MongoDB [poznámkách k vydání](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Mám aktualizovat MongoDB?

Měli byste **pouze** zvažte aktualizaci své verze MongoDB, pokud plánujete upgradovat svou instanci Server CE/Server Pro.

Pokud používáte verzi MongoDB novější, než je doporučená pro vaši aktuální (nebo cílovou) verzi, není třeba nic měnit.

{% hint style="warning" %}
Verzi MongoDB byste nikdy neměli downgradovat.
{% endhint %}

Pokud narazíte na konkrétní problém, o kterém se domníváte, že může souviset s vaší aktuální verzí MongoDB, neváhejte [nahlásit problém](https://github.com/overleaf/overleaf/issues) pokud jste uživatel Server CE, nebo kontaktujte podporu Overleaf, pokud jste uživatel Server Pro.

### Kontrola verze MongoDB

Otevření `mongo` shellu by mělo okamžitě zobrazit aktuální verzi.

Uživatelé Overleaf Toolkitu:

```bash
bin/docker-compose exec mongo mongod --version
verze DB v5.0.24
Informace o sestavení: {
    "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živatelé Docker Compose:

```bash
docker compose exec mongo mongod --version
verze DB v5.0.24
Informace o sestavení: {
    "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"
    }
}

```

### Postup aktualizace

Aktualizace verze MongoDB při upgradu vaší instance Server CE/Server Pro probíhá následovně:

1. Rozhodněte, na jakou verzi Server CE/Server Pro plánujete upgradovat.
2. Zjistěte verzi MongoDB doporučenou pro toto konkrétní vydání Overleaf Server CE/Server Pro.
3. Postupujte podle pokynů k upgradu MongoDB na cílovou verzi.
4. Upgradujte verzi image Server CE/Server Pro a restartujte instanci.

Naše doporučení je vždy upgradovat **Server CE/Server Pro** na nejnovější dostupnou verzi, protože je vždy zaručeně podporovaná (pouze uživatelé Server Pro).

{% hint style="danger" %}
Při provádění upgradu Server CE/Pro doporučujeme upgradovat na nejnovější vydání nasazené hlavní verze **před** upgradem na nejnovější vydání **následující** hlavní verze. Pokud je vaše nasazení za nejnovější verzí o více než jednu hlavní verzi pozadu, budete muset provést vícekrokový upgrade.

Například pokud používáte 3.5.10, budete muset upgradovat na 3.5.13 -> Proveďte migraci Full Project History -> 4.2.9 -> 5.5.4.

Měli byste **nikdy** nepřeskakujte hlavní verze (3.5.10 -> 5.5.4). Pokud používáte Toolkit a jste o více než jednu hlavní verzi pozadu vůči nejnovější verzi, musíte **ne** použít `bin/upgrade` skript, protože budete muset provést ruční vícekrokový upgrade.
{% endhint %}

{% hint style="warning" %}
Je důležité zajistit, abyste provedli [konzistentní zálohu](/on-premises/on-premises-cs/udrzba/data-and-backups.md#performing-a-consistent-backup) **před** při každém upgradu hlavní verze, abyste se mohli v případě potřeby vrátit zpět.
{% endhint %}

#### Informace o podpoře verzí

Pokud se rozhodnete přejít na starší verzi, tato tabulka ukazuje doporučenou verzi MongoDB pro starší vydání Server CE/Server Pro, ale měli byste **nikdy** downgradovat verzi MongoDB.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">Verze MongoDB</th><th align="center">Minimální verze kompatibility funkcí</th><th align="center">Maximální verze podporovaná ovladačem 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 až 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" %}
Výše uvedená minimální verze kompatibility funkcí vychází z odpovídající verze MongoDB doporučené pro použití s uvedenou verzí Overleaf. Pokud plánujete používat vyšší verzi, MongoDB bude mít vlastní minimální požadavek.
{% endhint %}

Kompatibilitní tabulku, která určuje podporované verze ovladače MongoDB Node.js pro použití s MongoDB, si můžete zobrazit [zde](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Stav ukončení podpory pro každou verzi MongoDB si můžete zobrazit [zde](https://endoflife.date/mongodb).

#### Upgrade MongoDB

MongoDB vyžaduje **postupné upgrady**. To znamená, že nemůžete přejít přímo například z `4.0` na `5.0`. Nejprve musíte aktualizovat `4.2` na `4.4`, a poté `5.0`.

{% hint style="info" %}
MongoDB používá pro své stabilní verze sudá čísla.
{% endhint %}

#### **Pokyny k aktualizaci při běhu MongoDB mimo Docker**

Zde jsou odkazy na pokyny k aktualizaci z mongodb.com při upgradu MongoDB.

* [Poznámky k vydání MongoDB – upgrade MongoDB z `4.2` na `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [Poznámky k vydání MongoDB – upgrade MongoDB z `4.4` na `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [Poznámky k vydání MongoDB – upgrade MongoDB z `5.0` na `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [Poznámky k vydání MongoDB – upgrade MongoDB z `6.0` na `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [Poznámky k vydání MongoDB – upgrade MongoDB z `7.0` na `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" %}
Pokyny pro `5.0` a vyšší odkazují na instalaci replikační sady místo samostatné instance. Protože Server Pro/CE 4.0.1+ používá transakce, MongoDB musí běžet jako replikační sada.
{% endhint %}

{% hint style="warning" %}
Dokumentace pro MongoDB 3.2 až 4.2 je nyní dostupná na <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Základní pokyny**

Ve většině případů aktualizace vyžaduje před samotnou aktualizací verze Mongo nastavení příznaku kompatibility. Postup je následující:

1. Nastavte příznak kompatibility podle popisu v poznámkách k vydání MongoDB (viz příklady níže).
2. Poté aktualizujte image Mongo:
   1. **Uživatelé Toolkitu** Aktualizujte `MONGO_VERSION`, např. `MONGO_VERSION=6.0`
   2. **Uživatelé Docker Compose** Aktualizujte verzi `mongo` tagu image,\
      např. `services -> mongo -> image: mongo:6.0`;

**Příklad: Upgrade MongoDB z `5.0` na `6.0`**

Začněme tím, že se ujistíme, že běží MongoDB `6.0`:

Uživatelé Overleaf Toolkitu:

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

Uživatelé Docker Compose:

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

Podle [pokynů k upgradu](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), je jediným požadavkem mít `featureCompatibilityVersion` nastavenou na `5.0`. To provedeme otevřením shellu MongoDB a spuštěním uvedeného příkazu:

Uživatelé Overleaf Toolkitu:

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

{% hint style="info" %}
Uživatelé Docker Compose mohou spustit `docker compose exec mongo mongosh` aby získali shell a spustili stejné příkazy jako uživatelé Toolkitu.
{% endhint %}

Uživatelé Overleaf Toolkitu:

Poté zastavíme instance Server CE/Server Pro a MongoDB pomocí `bin/stop` příkazu, nastavíme `MONGO_VERSION=6.0` v `config/overleaf.rc`, a poté restartujeme `mongo` službu pomocí `bin/up mongo`) pro ověření, že aktualizace proběhla hladce.

Nakonec aktualizujeme verzi image Server CE/Server Pro na naši cílovou verzi a znovu vytvoříme všechny služby pomocí `bin/up -d` příkazu.

Uživatelé Docker Compose:

Poté zastavíme instance Server CE/Server Pro a MongoDB pomocí `docker compose stop` příkaz, aktualizujte [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) soubor tak, aby používal `image: mongo:6.0`, a poté restartujeme `mongo` službu pomocí `docker compose up mongo` příkazu pro ověření, že aktualizace proběhla hladce.

Nakonec aktualizujeme verzi image Server CE/Server Pro na naši cílovou verzi a znovu vytvoříme všechny služby pomocí `docker compose up` příkazu.

**Příklad: Upgrade MongoDB z `6.0` na `7.0` (uživatelé Toolkitu)**

Začněte tím, že se ujistíte, že běží MongoDB `6.0` pomocí `mongod --version` výše uvedených příkazů.

Podle [pokynů k upgradu](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), je jediným požadavkem mít `featureCompatibilityVersion` nastavenou na `6.0`. To provedeme otevřením shellu MongoDB a spuštěním příkazu `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Uživatelé Overleaf Toolkitu:

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

Poté zastavíme instance Server CE/Server Pro a MongoDB pomocí `bin/stop` příkazu, nastavíme `MONGO_VERSION=7.0` v `config/overleaf.rc`, a poté restartujeme `mongo` službu pomocí `bin/up mongo`) pro ověření, že aktualizace proběhla hladce.

Nakonec aktualizujeme verzi image Server CE/Server Pro na naši cílovou verzi a znovu vytvoříme všechny služby pomocí `bin/up -d` příkazu.

**Příklad: Upgrade MongoDB z `7.0` na `8.0` (uživatelé Toolkitu)**

Začněte tím, že se ujistíte, že běží MongoDB `7.0` pomocí `mongod --version` výše uvedených příkazů.

Podle [pokynů k upgradu](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), je jediným požadavkem mít `featureCompatibilityVersion` nastavenou na `7.0`. To provedeme otevřením shellu MongoDB a spuštěním příkazu `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Upozorňujeme, že nyní to vyžaduje dodatečný `confirm: true` parametr.

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

Poté zastavíme instance Server CE/Server Pro a MongoDB pomocí `bin/stop` příkazu, nastavíme `MONGO_VERSION=8.0` v `config/overleaf.rc`, a poté restartujeme `mongo` službu pomocí `bin/up mongo`) pro ověření, že aktualizace proběhla hladce.

Nakonec aktualizujeme verzi image Server CE/Server Pro na naši cílovou verzi a znovu vytvoříme všechny služby pomocí `bin/up -d` příkazu.

#### Ekvivalentní příkazy pro uživatele docker compose

Pro uživatele docker compose jsou ekvivalentní příkazy:

* `docker compose exec mongo mongod --version` pro zobrazení verze Mongo
* `docker compose exec mongo mongosh` pro spuštění shellu Mongo pro administrátorské příkazy
* `docker compose stop` příkaz pro zastavení serveru
* Upravte [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) soubor tak, aby používal `image: mongo:6.0` pro upgrade verze Mongo
* `docker compose up mongo` pro restart služby Mongo a ověření, že aktualizace proběhla hladce
* Upravte [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) soubor tak, aby používal `image: sharelatex:VERSION` pro upgrade verze image
* `docker compose up` pro znovuvytvoření všech služeb.

### Vytvoření vlastní role

Ve verzi `5.5.1`, jsme zavedli kontrolu při spuštění, která ověřuje verzi kompatibility funkcí pro MongoDB. Pokud vaše databáze MongoDB používá ověřování (např. základní ověřování), `sharelatex` kontejner se nemusí spustit a zobrazí se "*nemáte oprávnění v admin k provedení příkazu*" chyba oprávnění.

Chcete-li to vyřešit, můžete buď vytvořit v MongoDB novou roli a přiřadit ji uživatelskému účtu používanému k přístupu k databázi podle níže uvedených pokynů, nebo nastavit `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` tak, aby kontrola mohla selhat, aniž by to zabránilo spuštění nasazení.

{% hint style="success" %}
Tato nová role **pouze** uděluje oprávnění číst parametry serveru MongoDB v rámci celého clusteru a může být znovu použita pro účely monitorování,
{% endhint %}

{% code overflow="wrap" %}

```bash
# Uživatelé Toolkitu
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# Přepněte se do databáze "admin" pomocí
overleaf [direct: primary] sharelatex> use admin
přepnuto na db admin
overleaf [direct: primary] admin> 

# Vytvořte novou roli s oprávněním používat "getParamter". Zkopírujte a vložte níže uvedenou funkci do shellu a stiskněte klávesu Enter

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

# Přepněte zpět do databáze "sharelatex" 
use sharelatex
přepnuto na db sharelatex
overleaf [direct: primary] sharelatex> 

# Přiřaďte novou roli "clusterParameterReader" svému uživateli databáze zkopírováním a vložením níže uvedené funkce do shellu a stisknutím klávesy Enter 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Napište exit a poté stiskněte Enter pro ukončení shellu MongoDB
# Spusťte bin/up -d pro spuštění stacku nasazení
$ 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/on-premises-cs/udrzba/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.
