> 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/de/wartung/updating-mongodb.md).

# MongoDB aktualisieren

{% hint style="info" %}
Jede neue Version von Server CE/Server Pro weist in ihren [Versionshinweisen](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Sollte ich MongoDB aktualisieren?

Sie sollten **nur** eine Aktualisierung Ihrer MongoDB-Version in Betracht ziehen, wenn Sie planen, Ihre Server-CE/Server-Pro-Instanz zu aktualisieren.

Wenn Sie eine MongoDB-Version verwenden, die neuer ist als die für Ihre aktuelle (oder Ziel-)Version empfohlene, müssen Sie nichts ändern.

{% hint style="warning" %}
Sie sollten Ihre MongoDB-Version niemals herabstufen.
{% endhint %}

Wenn bei Ihnen ein bestimmtes Problem auftritt, von dem Sie vermuten, dass es mit Ihrer aktuellen MongoDB-Version zusammenhängt, können Sie gerne [ein Problem melden](https://github.com/overleaf/overleaf/issues) wenn Sie Server-CE-Benutzer sind, oder den Overleaf-Support kontaktieren, wenn Sie Server-Pro-Benutzer sind.

### Überprüfen Ihrer MongoDB-Version

Beim Öffnen der `mongo` Shell sollte die aktuelle Version sofort ausgegeben werden.

Overleaf Toolkit-Benutzer:

```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"
    }
}
```

Docker-Compose-Benutzer:

```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"
    }
}

```

### Aktualisierungsprozess

Das Aktualisieren der MongoDB-Version während eines Upgrades Ihrer Server-CE/Server-Pro-Instanz erfolgt wie folgt:

1. Entscheiden Sie sich für die Server-CE/Server-Pro-Version, auf die Sie aktualisieren möchten.
2. Ermitteln Sie die MongoDB-Version, die von dieser spezifischen Overleaf-Server-CE/Server-Pro-Version empfohlen wird.
3. Befolgen Sie die Anweisungen, um MongoDB auf die Zielversion zu aktualisieren.
4. Aktualisieren Sie die Image-Version von Server CE/Server Pro und starten Sie die Instanz neu.

Unsere Empfehlung ist, Server CE/Server Pro immer auf **Server CE/Server Pro** die neueste verfügbare Version zu aktualisieren, da diese immer garantiert unterstützt wird (nur für Server-Pro-Benutzer).

{% hint style="danger" %}
Wenn Sie ein Upgrade von Server CE/Pro durchführen, empfehlen wir, zuerst auf die neueste Version der eingesetzten Major-Version **vor** dem Upgrade auf die neueste Version der **nächsten** Major-Version zu aktualisieren. Wenn Ihre Bereitstellung mehr als eine Major-Version hinter der neuesten zurückliegt, müssen Sie ein mehrstufiges Upgrade durchführen.

Wenn Sie beispielsweise 3.5.10 verwenden, müssen Sie auf 3.5.13 aktualisieren -> die Full-Project-History-Migration durchführen -> 4.2.9 -> 5.5.4.

Sie sollten **niemals** Major-Versionen überspringen (3.5.10 -> 5.5.4). Wenn Sie das Toolkit verwenden und mehr als eine Major-Version hinter der neuesten Version zurückliegen, dürfen Sie **nicht** das `bin/upgrade` Skript verwenden, da Sie ein manuelles mehrstufiges Upgrade durchführen müssen.
{% endhint %}

{% hint style="warning" %}
Es ist wichtig sicherzustellen, dass Sie ein [konsistentes Backup](/on-premises/de/wartung/data-and-backups.md#performing-a-consistent-backup) **vor** bei jedem Major-Version-Upgrade erstellen, damit Sie bei Bedarf zurückrollen können.
{% endhint %}

#### Informationen zur Versionsunterstützung

Falls Sie sich für eine frühere Version entscheiden, zeigt diese Tabelle die empfohlene MongoDB-Version für frühere Releases von Server CE/Server Pro, aber Sie sollten **niemals** Ihre MongoDB-Version herabstufen.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">MongoDB-Version</th><th align="center">Minimale Feature-Kompatibilitätsversion</th><th align="center">Vom Node.js-Treiber unterstützte Maximalversion</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 bis 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" %}
Die oben genannte minimale Feature-Kompatibilitätsversion basiert auf der entsprechenden MongoDB-Version, die für die Verwendung mit der gezeigten Overleaf-Version empfohlen wird. Wenn Sie planen, eine höhere Version zu verwenden, hat MongoDB seine eigene Mindestanforderung.
{% endhint %}

Sie können die Kompatibilitätstabelle einsehen, die die unterstützten Versionen des MongoDB-Node.js-Treibers für die Verwendung mit MongoDB angibt [hier](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Sie können den End-of-Life-Status für jede MongoDB-Version einsehen [hier](https://endoflife.date/mongodb).

#### MongoDB aktualisieren

MongoDB erfordert **schrittweise Upgrades**. Das bedeutet, dass Sie nicht direkt von, sagen wir `4.0` auf `5.0`. Sie müssen zuerst `4.2` auf `4.4`aktualisieren, und dann `5.0`.

{% hint style="info" %}
MongoDB verwendet gerade Zahlen für ihre stabilen Versionen.
{% endhint %}

#### **Aktualisierungsanweisungen beim Betrieb von MongoDB außerhalb von Docker**

Hier sind Links zu den Aktualisierungsanweisungen von mongodb.com zum Aktualisieren von MongoDB.

* [MongoDB-Versionshinweise - Aktualisieren von MongoDB von `4.2` auf `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [MongoDB-Versionshinweise - Aktualisieren von MongoDB von `4.4` auf `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [MongoDB-Versionshinweise - Aktualisieren von MongoDB von `5.0` auf `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [MongoDB-Versionshinweise - Aktualisieren von MongoDB von `6.0` auf `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [MongoDB-Versionshinweise - Aktualisieren von MongoDB von `7.0` auf `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" %}
Anweisungen für `5.0` und höher verweisen auf eine Replikatset-Installation statt auf Standalone. Da Server Pro/CE 4.0.1+ Transaktionen verwendet, muss MongoDB als Replikatset ausgeführt werden.
{% endhint %}

{% hint style="warning" %}
Die Dokumentation für MongoDB 3.2 bis 4.2 ist jetzt über <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Grundlegende Anweisungen**

In den meisten Fällen erfordert das Update das Einrichten eines Kompatibilitätsflags, bevor die Mongo-Version tatsächlich aktualisiert wird. Die Schritte sind wie folgt:

1. Setzen Sie das Kompatibilitätsflag wie in den MongoDB-Versionshinweisen beschrieben (siehe die folgenden Beispiele).
2. Dann aktualisieren Sie das Mongo-Image:
   1. **Toolkit-Benutzer** Aktualisieren Sie `MONGO_VERSION`, z. B. `MONGO_VERSION=6.0`
   2. **Docker-Compose-Benutzer** Aktualisieren Sie die Version des `mongo` Image-Tags,\
      z. B. `services -> mongo -> image: mongo:6.0`;

**Beispiel: MongoDB aktualisieren von `5.0` auf `6.0`**

Beginnen wir damit, sicherzustellen, dass wir MongoDB `6.0`:

Overleaf Toolkit-Benutzer:

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

Docker-Compose-Benutzer:

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

Laut den [Aktualisierungsanweisungen](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), ist die einzige Voraussetzung, dass `featureCompatibilityVersion` auf `5.0`. Wir tun dies, indem wir eine MongoDB-Shell öffnen und den angegebenen Befehl ausführen:

Overleaf Toolkit-Benutzer:

```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" %}
Docker-Compose-Benutzer können `docker compose exec mongo mongosh` verwenden, um eine Shell zu erhalten und dieselben Befehle wie Toolkit-Benutzer auszuführen.
{% endhint %}

Overleaf Toolkit-Benutzer:

Dann beenden wir die Server-CE/Server-Pro- und MongoDB-Instanzen mit dem `bin/stop` Befehl, setzen `MONGO_VERSION=6.0` in `config/overleaf.rc`, und starten dann den `mongo` Dienst mit `bin/up mongo`) um zu überprüfen, dass das Update reibungslos verlief.

Schließlich aktualisieren wir die Image-Version von Server CE/Server Pro auf unsere Zielversion und erstellen alle Dienste mit dem `bin/up -d` Befehl neu.

Docker-Compose-Benutzer:

Dann beenden wir die Server-CE/Server-Pro- und MongoDB-Instanzen mit dem `docker compose stop` Befehl, aktualisieren Sie die [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) Datei, sodass sie `image: mongo:6.0`, und starten dann den `mongo` den Dienst mit dem `docker compose up mongo` Befehl, um zu überprüfen, dass das Update reibungslos verlief.

Schließlich aktualisieren wir die Image-Version von Server CE/Server Pro auf unsere Zielversion und erstellen alle Dienste mit dem `docker compose up` Befehl neu.

**Beispiel: MongoDB aktualisieren von `6.0` auf `7.0` (Toolkit-Benutzer)**

Stellen Sie zunächst sicher, dass Sie MongoDB `6.0` mithilfe der `mongod --version` oben genannten Befehle ausführen.

Laut den [Aktualisierungsanweisungen](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), ist die einzige Voraussetzung, dass `featureCompatibilityVersion` auf `6.0`. Wir tun dies, indem wir eine MongoDB-Shell öffnen und den Befehl `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Overleaf Toolkit-Benutzer:

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

Dann beenden wir die Server-CE/Server-Pro- und MongoDB-Instanzen mit dem `bin/stop` Befehl, setzen `MONGO_VERSION=7.0` in `config/overleaf.rc`, und starten dann den `mongo` Dienst mit `bin/up mongo`) um zu überprüfen, dass das Update reibungslos verlief.

Schließlich aktualisieren wir die Image-Version von Server CE/Server Pro auf unsere Zielversion und erstellen alle Dienste mit dem `bin/up -d` Befehl neu.

**Beispiel: MongoDB aktualisieren von `7.0` auf `8.0` (Toolkit-Benutzer)**

Stellen Sie zunächst sicher, dass Sie MongoDB `7.0` mithilfe der `mongod --version` oben genannten Befehle ausführen.

Laut den [Aktualisierungsanweisungen](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), ist die einzige Voraussetzung, dass `featureCompatibilityVersion` auf `7.0`. Wir tun dies, indem wir eine MongoDB-Shell öffnen und den Befehl `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Beachten Sie, dass hierfür jetzt zusätzlich `confirm: true` der Parameter erforderlich ist.

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

Dann beenden wir die Server-CE/Server-Pro- und MongoDB-Instanzen mit dem `bin/stop` Befehl, setzen `MONGO_VERSION=8.0` in `config/overleaf.rc`, und starten dann den `mongo` Dienst mit `bin/up mongo`) um zu überprüfen, dass das Update reibungslos verlief.

Schließlich aktualisieren wir die Image-Version von Server CE/Server Pro auf unsere Zielversion und erstellen alle Dienste mit dem `bin/up -d` Befehl neu.

#### Entsprechende Befehle für Docker-Compose-Benutzer

Für Docker-Compose-Benutzer lauten die entsprechenden Befehle:

* `docker compose exec mongo mongod --version` um die MongoDB-Version anzuzeigen
* `docker compose exec mongo mongosh` um eine Mongo-Shell für Administrationsbefehle zu starten
* `docker compose stop` Befehl, um den Server zu stoppen
* Bearbeiten Sie die [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) Datei, sodass sie `image: mongo:6.0` um die MongoDB-Version zu aktualisieren
* `docker compose up mongo` um den MongoDB-Dienst neu zu starten und zu überprüfen, dass das Update reibungslos verlief
* Bearbeiten Sie die [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) Datei, sodass sie `image: sharelatex:VERSION` um die Image-Version zu aktualisieren
* `docker compose up` um alle Dienste neu zu erstellen.

### Eine benutzerdefinierte Rolle erstellen

In Version `5.5.1`, haben wir eine Startprüfung eingeführt, um die Feature-Kompatibilitätsversion für MongoDB zu überprüfen. Wenn Ihre MongoDB-Datenbank Authentifizierung verwendet (z. B. Basisauthentifizierung), könnte der `sharelatex` Container möglicherweise nicht starten und einen "*not authorized on admin to execute command*"-Berechtigungsfehler anzeigen.

Um dies zu beheben, können Sie entweder eine neue Rolle in MongoDB erstellen und sie dem Benutzerkonto zuweisen, das für den Zugriff auf die Datenbank verwendet wird, oder `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` setzen, damit die Prüfung fehlschlagen darf, ohne den Start des Deployments zu verhindern.

{% hint style="success" %}
Diese neue Rolle **nur** gewährt die Berechtigung, clusterweite MongoDB-Serverparameter zu lesen, und könnte für Überwachungszwecke wiederverwendet werden,
{% endhint %}

{% code overflow="wrap" %}

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

# Wechseln Sie mit in die "admin"-Datenbank
overleaf [direct: primary] sharelatex> use admin
zu db admin gewechselt
overleaf [direct: primary] admin> 

# Erstellen Sie eine neue Rolle mit der Berechtigung, "getParamter" zu verwenden. Kopieren Sie die folgende Funktion in die Shell und drücken Sie die Eingabetaste

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

# Wechseln Sie zurück zur "sharelatex"-Datenbank 
use sharelatex
zu db sharelatex gewechselt
overleaf [direct: primary] sharelatex> 

# Weisen Sie Ihrem Datenbankbenutzer die neue Rolle "clusterParameterReader" zu, indem Sie die folgende Funktion in die Shell kopieren und einfügen und die Eingabetaste drücken 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Geben Sie exit ein und drücken Sie dann die Eingabetaste, um die MongoDB-Shell zu beenden
# Führen Sie bin/up -d aus, um den Deployment-Stack zu starten
$ 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/de/wartung/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.
