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

# Aktualizace MongoDB

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

### Mám aktualizovat MongoDB?

Měli byste **pouze** zvažovat aktualizaci 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 provádět žádné změny.

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

Pokud zaznamenáte konkrétní problém, o kterém si myslí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živatelem Server CE, nebo kontaktujte podporu Overleaf, pokud jste uživatelem Server Pro.

### Kontrola verze MongoDB

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

Uživatelé Overleaf Toolkitu:

```bash
bin/docker-compose exec mongo mongod --version
db version 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
db version 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 během upgradu vaší instance Server CE/Server Pro probíhá následovně:

1. Rozhodněte, na jakou verzi Server CE/Server Pro chcete upgradovat.
2. Najděte verzi MongoDB doporučenou pro konkrétní vydání Overleaf Server CE/Server Pro.
3. Postupujte podle pokynů k aktualizaci 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čeno, že bude podporována (pouze pro uživatele 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í více než jednu hlavní verzi za nejnovější verzí, bude nutné provést vícekrokový upgrade.

Například pokud používáte 3.5.10, budete muset upgradovat na 3.5.13 -> Provést 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 více než jednu hlavní verzi za nejnovější verzí, 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, že provedete [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 na hlavní verzi, abyste se v případě potřeby mohli vrátit zpět.
{% endhint %}

#### Informace o podpoře verzí

Pokud se rozhodnete přejít na starší verzi, tato tabulka zobrazuje 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í je založena na odpovídající verzi MongoDB doporučené pro použití s uvedenou verzí Overleafu. Pokud plánujete používat vyšší verzi, bude mít MongoDB vlastní minimální požadavek.
{% endhint %}

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

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

#### Aktualizace MongoDB

MongoDB vyžaduje **postupné upgrady**. To znamená, že nemůžete přejít přímo z, řekněme `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 spuštění 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, musí být MongoDB spuštěna jako replikační sada.
{% endhint %}

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

**Základní pokyny**

Ve většině případů aktualizace vyžaduje nastavení příznaku kompatibility 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 image mongo:
   1. **Uživatelé Toolkit** 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`**

Nejprve se ujistěme, že používáme 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 MongoDB shellu v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# sbohem
```

{% 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é Toolkit.
{% 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`) a ověříme, ž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říkazu, upravte [`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 a ověřte, ž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 používáte 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
# sbohem
```

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`) a ověříme, ž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 používáte 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 })`. Všimněte si, že to nyní vyžaduje dodatečný `confirm: true` parametr.

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

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`) a ověříme, ž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í mongo shellu 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 restartování 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 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í 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 „*not authorized on admin to execute command*“ 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 bylo možné, že kontrola selže, 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 platné pro celý cluster a může být znovu použita pro účely monitorování,
{% endhint %}

{% code overflow="wrap" %}

```bash
# Uživatelé Toolkit
$ 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 se 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í nasazovacího stacku
$ 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/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.
