> ## 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.

# Aktualizace MongoDB

<Info>
  Každé nové vydání Server CE/Server Pro uvádí ve svých [poznámkách k vydání](https://docs.overleaf.com/on-premises/release-notes) případnou změnu podporované verze MongoDB.
</Info>

### Mám aktualizovat MongoDB?

Aktualizaci verze MongoDB byste měli zvažovat **pouze** tehdy, pokud plánujete upgrade své instance 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.

<Warning>
  Verzi MongoDB byste nikdy neměli snižovat (downgrade).
</Warning>

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

### Zjištění verze MongoDB

Po otevření shellu `mongo` by se měla okamžitě vypsat aktuální verze.

Uživatelé 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živatelé 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"
    }
}

```

### Postup aktualizace

Aktualizace verze MongoDB během upgradu instance Server CE/Server Pro probíhá takto:

1. Rozhodněte, na kterou verzi Server CE/Server Pro chcete provést upgrade.
2. Zjistěte verzi MongoDB doporučenou pro dané vydání Overleaf Server CE/Server Pro.
3. Podle pokynů proveďte upgrade MongoDB na cílovou verzi.
4. Proveďte upgrade verze obrazu Server CE/Server Pro a restartujte instanci.

Doporučujeme vždy provádět upgrade **Server CE/Server Pro** na nejnovější dostupnou verzi, protože ta je vždy zaručeně podporována (pouze uživatelé Server Pro).

<Danger>
  Při upgradu Server CE/Pro doporučujeme nejprve provést upgrade na nejnovější vydání nasazené hlavní verze, a teprve **poté** na nejnovější vydání **následující** hlavní verze. Pokud je vaše nasazení o více než jednu hlavní verzi pozadu za nejnovější, budete muset provést upgrade v několika krocích.

  Pokud například používáte verzi 3.5.10, budete muset provést upgrade na 3.5.13 -> provést migraci na úplnou historii projektů -> 4.2.9 -> 5.5.4.

  Hlavní verze byste **nikdy** neměli přeskakovat (3.5.10 -> 5.5.4). Pokud používáte Toolkit a jste o více než jednu hlavní verzi pozadu za nejnovější, **nesmíte** používat skript `bin/upgrade`, protože budete muset provést ruční upgrade v několika krocích.
</Danger>

<Warning>
  Je důležité **před** každým upgradem hlavní verze pořídit [konzistentní zálohu](/cs/on-premises/maintenance/data-and-backups#performing-a-consistent-backup), abyste se v případě potřeby mohli vrátit zpět.
</Warning>

#### Informace o podpoře verzí

Pokud se rozhodnete přejít na starší verzi, tato tabulka uvádí doporučenou verzi MongoDB pro starší vydání Server CE/Server Pro; verzi MongoDB byste však **nikdy** neměli snižovat.

<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" }}>Verze MongoDB</th><th style={{ textAlign: "center" }}>Minimální verze kompatibility funkcí</th><th style={{ textAlign: "center" }}>Maximální verze podporovaná ovladačem 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 až 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>
  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žít vyšší verzi, bude mít MongoDB vlastní minimální požadavek.
</Danger>

Tabulku kompatibility, která uvádí podporované verze ovladače MongoDB pro Node.js pro použití s MongoDB, najdete [zde](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Stav ukončení podpory (end-of-life) pro jednotlivé verze MongoDB najdete [zde](https://endoflife.date/mongodb).

#### Upgrade MongoDB

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

<Info>
  MongoDB používá pro své stabilní verze sudá čísla.
</Info>

#### **Pokyny k aktualizaci při provozu MongoDB mimo Docker**

Zde jsou odkazy na pokyny k aktualizaci z mongodb.com pro upgrade 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)

<Info>
  Pokyny pro verzi `5.0` a vyšší odkazují na instalaci v režimu replica set, nikoli na samostatnou instalaci. Protože Server Pro/CE 4.0.1+ používá transakce, musí MongoDB běžet jako replica set.
</Info>

<Warning>
  Dokumentace pro MongoDB 3.2 až 4.2 je nyní k dispozici na [https://www.mongodb.com/docs/legacy/](https://www.mongodb.com/docs/legacy/)
</Warning>

**Základní pokyny**

Ve většině případů aktualizace vyžaduje nastavení příznaku kompatibility ještě před samotnou aktualizací verze mongo. 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 obraz mongo:
   1. **Uživatelé Toolkitu** Aktualizujte `MONGO_VERSION`, např. `MONGO_VERSION=6.0`
   2. **Uživatelé Docker Compose** Aktualizujte verzi tagu obrazu `mongo`,\
      např. `services -> mongo -> image: mongo:6.0`;

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

Začněme ověřením, že používáme MongoDB `6.0`:

Uživatelé Overleaf Toolkit:

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

Uživatelé Docker Compose:

```bash theme={null}
docker compose exec mongo mongod --version
# db version 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` nastaveno na `5.0`. Uděláme to tak, že otevřeme shell MongoDB a spustíme uvedený příkaz:

Uživatelé 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živatelé Docker Compose mohou spustit `docker compose exec mongo mongosh`, čímž získají shell, a spustit stejné příkazy jako uživatelé Toolkitu.
</Info>

Uživatelé Overleaf Toolkit:

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

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

Uživatelé Docker Compose:

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

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

<strong>Příklad: Upgrade MongoDB z `6.0` na `7.0` (uživatelé toolkitu)</strong>

Začněte ověřením, že používáte MongoDB `6.0`, pomocí výše uvedených příkazů `mongod --version`.

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` nastaveno na `6.0`. Uděláme to tak, že otevřeme shell MongoDB a spustíme příkaz `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Uživatelé Overleaf Toolkit:

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

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

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

<strong>Příklad: Upgrade MongoDB z `7.0` na `8.0` (uživatelé toolkitu)</strong>

Začněte ověřením, že používáte MongoDB `7.0`, pomocí výše uvedených příkazů `mongod --version`.

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` nastaveno na `7.0`. Uděláme to tak, že otevřeme shell MongoDB a spustíme příkaz `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Upozorňujeme, že nyní je vyžadován další parametr `confirm: true`.

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

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

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

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

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

* `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
* příkaz `docker compose stop` pro zastavení serveru
* Upravte soubor [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) tak, aby používal `image: mongo:6.0`, a tím proveďte upgrade verze mongo
* `docker compose up mongo` pro restart služby mongo a ověření, že aktualizace proběhla hladce
* Upravte soubor [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) tak, aby používal `image: sharelatex:VERSION`, a tím proveďte upgrade verze obrazu
* `docker compose up` pro opětovné vytvoř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í MongoDB. Pokud vaše databáze MongoDB používá ověřování (např. základní ověřování), kontejner `sharelatex` se nemusí spustit a zobrazí chybu oprávnění „*not authorized on admin to execute command*“.

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

<Check>
  Tato nová role uděluje **pouze** oprávnění ke čtení parametrů serveru MongoDB platných pro celý cluster a lze ji znovu použít i pro účely monitorování,
</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.