> 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/fi/yllapito/updating-mongodb.md).

# MongoDB:n päivittäminen

{% hint style="info" %}
Kaikki Server CE/Server Pron uudet julkaisut ilmoittavat tuetun MongoDB-version muutoksista sen [julkaisutiedoissa](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Pitäisikö minun päivittää MongoDB?

Sinun pitäisi **vain** harkita MongoDB-versiosi päivittämistä, jos aiot päivittää Server CE/Server Pro -instanssisi.

Jos käytössäsi on MongoDB-versio, joka on uudempi kuin nykyiselle (tai kohde-) versiolle suositeltu, mitään muutoksia ei tarvitse tehdä.

{% hint style="warning" %}
Älä koskaan alenna MongoDB-versiotasi.
{% endhint %}

Jos kohtaat tietyn ongelman, jonka epäilet liittyvän nykyiseen MongoDB-versioosi, voit vapaasti [avata tiketin](https://github.com/overleaf/overleaf/issues) jos olet Server CE -käyttäjä tai ottaa yhteyttä Overleaf-tukeen, jos olet Server Pro -käyttäjä.

### MongoDB-version tarkistaminen

Kuoren avaaminen `mongo` pitäisi tulostaa nykyinen versio välittömästi.

Overleaf Toolkit -käyttäjät:

```bash
bin/docker-compose exec mongo mongod --version
db-versio v5.0.24
Koontitiedot: {
    "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 -käyttäjät:

```bash
docker compose exec mongo mongod --version
db-versio v5.0.24
Koontitiedot: {
    "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"
    }
}

```

### Päivitysprosessi

MongoDB-version päivittäminen Server CE/Server Pro -instanssisi päivityksen yhteydessä tapahtuu seuraavasti:

1. Päätä, mihin Server CE/Server Pro -versioon aiot päivittää.
2. Etsi juuri kyseisen Overleaf Server CE/Server Pro -julkaisun suosittelema MongoDB-versio.
3. Noudata ohjeita MongoDB:n päivittämiseksi kohdeversioon.
4. Päivitä Server CE/Server Pro -kuvan versio ja käynnistä instanssi uudelleen.

Suosituksemme on aina päivittää **Server CE/Server Pro** uusimpaan saatavilla olevaan versioon, koska sen tuki on aina taattu (vain Server Pro -käyttäjät).

{% hint style="danger" %}
Kun teet Server CE/Pro -päivitystä, suosittelemme päivittämään ensin käyttöönotetun pääversion uusimpaan julkaisuun **ennen** kuin päivität **seuraavan** pääversion uusimpaan julkaisuun. Jos käyttöönotettasi on enemmän kuin yksi pääversio jäljessä uusimmasta, sinun on tehtävä monivaiheinen päivitys.

Jos esimerkiksi käytössäsi on 3.5.10, sinun on päivitettävä versioon 3.5.13 -> suoritettava Full Project History -migraatio -> 4.2.9 -> 5.5.4.

Sinun pitäisi **ei koskaan** ohita pääversioita (3.5.10 -> 5.5.4). Jos käytät Toolkitia ja olet enemmän kuin yhden pääversion jäljessä uusimmasta, sinun täytyy **ei** käyttää `bin/upgrade` skriptiä, koska sinun täytyy tehdä manuaalinen monivaiheinen päivitys.
{% endhint %}

{% hint style="warning" %}
On tärkeää varmistaa, että otat [johdonmukaisen varmuuskopion](/on-premises/fi/yllapito/data-and-backups.md#performing-a-consistent-backup) **ennen** jokaisen pääversion päivityksen yhteydessä, jotta voit tarvittaessa palata takaisin.
{% endhint %}

#### Versiotuen tiedot

Jos päätät siirtyä aiempaan versioon, tämä taulukko näyttää suositellun MongoDB-version Server CE/Server Pron aiemmille julkaisuille, mutta sinun pitäisi **ei koskaan** alentaa MongoDB-versiotasi.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">MongoDB-versio</th><th align="center">Vähimmäisominaisuusyhteensopivuusversio</th><th align="center">Node.js-ajurin suurin tuettu versio</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 - 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" %}
Yllä oleva vähimmäisominaisuusyhteensopivuusversio perustuu vastaavaan MongoDB-versioon, jota suositellaan käytettäväksi näytetyn Overleaf-version kanssa. Jos aiot käyttää korkeampaa versiota, MongoDB:llä on oma vähimmäisvaatimuksensa.
{% endhint %}

Voit tarkastella yhteensopivuustaulukkoa, jossa määritetään MongoDB:n kanssa käytettävät tuetut MongoDB Node.js -ajurin versiot [täältä](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Voit tarkastella kunkin MongoDB-version elinkaaren päättymistilaa [täältä](https://endoflife.date/mongodb).

#### MongoDB:n päivittäminen

MongoDB edellyttää **vaiheittaisia päivityksiä**. Se tarkoittaa, että et voi hypätä suoraan esimerkiksi `4.0` versiosta `5.0`. Sinun täytyy ensin päivittää `4.2` versiosta `4.4`, ja sitten `5.0`.

{% hint style="info" %}
MongoDB käyttää parillisia numeroita vakaille versioilleen.
{% endhint %}

#### **Päivitysohjeet, kun MongoDB:tä ajetaan Dockerin ulkopuolella**

Tässä ovat mongodb.comin päivitysohjeet MongoDB:n päivittämiseen.

* [MongoDB:n julkaisutiedot - MongoDB:n päivittäminen versiosta `4.2` versiosta `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [MongoDB:n julkaisutiedot - MongoDB:n päivittäminen versiosta `4.4` versiosta `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [MongoDB:n julkaisutiedot - MongoDB:n päivittäminen versiosta `5.0` versiosta `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [MongoDB:n julkaisutiedot - MongoDB:n päivittäminen versiosta `6.0` versiosta `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [MongoDB:n julkaisutiedot - MongoDB:n päivittäminen versiosta `7.0` versiosta `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" %}
Ohjeet `5.0` ja uudemmissa viittaavat replikaattijoukkoasennukseen, eivät itsenäiseen asennukseen. Koska Server Pro/CE 4.0.1+ käyttää transaktioita, MongoDB täytyy ajaa replikaattijoukkona.
{% endhint %}

{% hint style="warning" %}
MongoDB 3.2:n ja 4.2:n dokumentaatio on nyt saatavilla osoitteessa <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Perusohjeet**

Useimmissa tapauksissa päivitys edellyttää yhteensopivuuslipun asettamista ennen mongo-version varsinaista päivittämistä. Vaiheet ovat seuraavat:

1. Aseta yhteensopivuuslippu kuten MongoDB:n julkaisutiedoissa kuvataan (katso esimerkit alla).
2. Päivitä sitten mongo-kuva:
   1. **Toolkit-käyttäjät** Päivitä `MONGO_VERSION`, esim. `MONGO_VERSION=6.0`
   2. **Docker Compose -käyttäjät** Päivitä `mongo` kuvatagin versio,\
      esim. `services -> mongo -> image: mongo:6.0`;

**Esimerkki: MongoDB:n päivittäminen versiosta `5.0` versiosta `6.0`**

Aloitetaan varmistamalla, että käytämme MongoDB:tä `6.0`:

Overleaf Toolkit -käyttäjät:

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

Docker Compose -käyttäjät:

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

Päivitysohjeiden mukaan [päivitysohjeet](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), ainoa vaatimus on, että `featureCompatibilityVersion` asetettuna `5.0`. Teemme tämän avaamalla MongoDB-kuoren ja suorittamalla annetun komennon:

Overleaf Toolkit -käyttäjät:

```bash
bin/mongo
# MongoDB-kuoren versio v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# bye
```

{% hint style="info" %}
Docker Compose -käyttäjät voivat suorittaa `docker compose exec mongo mongosh` saadakseen kuoren ja suorittaakseen samat komennot kuin Toolkit-käyttäjät.
{% endhint %}

Overleaf Toolkit -käyttäjät:

Pysäytämme sitten Server CE/Server Pro- ja MongoDB-instanssit käyttäen `bin/stop` komentoa, asetamme `MONGO_VERSION=6.0` tiedostossa `config/overleaf.rc`, ja käynnistämme sitten `mongo` palvelun käyttäen `bin/up mongo`) varmistaaksemme, että päivitys sujui ongelmitta.

Lopuksi päivitämme Server CE/Server Pro -kuvan version tavoiteversioomme ja luomme kaikki palvelut uudelleen käyttäen `bin/up -d` komentoa.

Docker Compose -käyttäjät:

Pysäytämme sitten Server CE/Server Pro- ja MongoDB-instanssit käyttäen `docker compose stop` komennolla, päivitä [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) tiedosto käyttämään `image: mongo:6.0`, ja käynnistämme sitten `mongo` palvelu käyttäen `docker compose up mongo` komennolla varmistaaksesi, että päivitys sujui ongelmitta.

Lopuksi päivitämme Server CE/Server Pro -kuvan version tavoiteversioomme ja luomme kaikki palvelut uudelleen käyttäen `docker compose up` komentoa.

**Esimerkki: MongoDB:n päivittäminen versiosta `6.0` versiosta `7.0` (Toolkit-käyttäjät)**

Aloita varmistamalla, että käytössäsi on MongoDB `6.0` käyttämällä `mongod --version` edellä olevat komennot.

Päivitysohjeiden mukaan [päivitysohjeet](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), ainoa vaatimus on, että `featureCompatibilityVersion` asetettuna `6.0`. Teemme tämän avaamalla MongoDB-kuoren ja suorittamalla komennon `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Overleaf Toolkit -käyttäjät:

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

Pysäytämme sitten Server CE/Server Pro- ja MongoDB-instanssit käyttäen `bin/stop` komentoa, asetamme `MONGO_VERSION=7.0` tiedostossa `config/overleaf.rc`, ja käynnistämme sitten `mongo` palvelun käyttäen `bin/up mongo`) varmistaaksemme, että päivitys sujui ongelmitta.

Lopuksi päivitämme Server CE/Server Pro -kuvan version tavoiteversioomme ja luomme kaikki palvelut uudelleen käyttäen `bin/up -d` komentoa.

**Esimerkki: MongoDB:n päivittäminen versiosta `7.0` versiosta `8.0` (Toolkit-käyttäjät)**

Aloita varmistamalla, että käytössäsi on MongoDB `7.0` käyttämällä `mongod --version` edellä olevat komennot.

Päivitysohjeiden mukaan [päivitysohjeet](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), ainoa vaatimus on, että `featureCompatibilityVersion` asetettuna `7.0`. Teemme tämän avaamalla MongoDB-kuoren ja suorittamalla komennon `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Huomaa, että tämä vaatii nyt lisäksi `confirm: true` parametrin.

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

Pysäytämme sitten Server CE/Server Pro- ja MongoDB-instanssit käyttäen `bin/stop` komentoa, asetamme `MONGO_VERSION=8.0` tiedostossa `config/overleaf.rc`, ja käynnistämme sitten `mongo` palvelun käyttäen `bin/up mongo`) varmistaaksemme, että päivitys sujui ongelmitta.

Lopuksi päivitämme Server CE/Server Pro -kuvan version tavoiteversioomme ja luomme kaikki palvelut uudelleen käyttäen `bin/up -d` komentoa.

#### Vastaavat komennot docker compose -käyttäjille

Docker compose -käyttäjille vastaavat komennot ovat:

* `docker compose exec mongo mongod --version` mongo-version näyttämiseen
* `docker compose exec mongo mongosh` mongo-kuoren käynnistämiseen ylläpitokomentoja varten
* `docker compose stop` komento palvelimen pysäyttämiseen
* Muokkaa [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) tiedosto käyttämään `image: mongo:6.0` päivittääksesi mongo-version
* `docker compose up mongo` käynnistääksesi mongo-palvelun uudelleen ja varmistaaksesi, että päivitys sujui ongelmitta
* Muokkaa [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) tiedosto käyttämään `image: sharelatex:VERSION` päivittääksesi kuvan version
* `docker compose up` luodaksesi kaikki palvelut uudelleen.

### Mukautetun roolin luominen

Versiossa `5.5.1`, otimme käyttöön käynnistystarkistuksen MongoDB:n feature compatibility -version varmistamiseksi. Jos MongoDB-tietokantasi käyttää todennusta (esim. perustodennusta), `sharelatex` kontti ei ehkä käynnisty ja näyttää virheilmoituksen "*ei valtuuksia suorittaa komentoa adminissa*" -oikeusvirheen.

Voit ratkaista tämän joko luomalla uuden roolin MongoDB:ssä ja määrittämällä sen käyttäjätilille, jota käytetään tietokannan käyttämiseen alla olevien ohjeiden mukaisesti, tai asettamalla `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` jotta tarkistus voi epäonnistua estämättä käyttöönoton käynnistymistä.

{% hint style="success" %}
Tämä uusi rooli **vain** myöntää oikeuden lukea koko klusterin MongoDB-palvelinparametreja ja sitä voidaan käyttää uudelleen valvontatarkoituksiin,
{% endhint %}

{% code overflow="wrap" %}

```bash
# Toolkit-käyttäjät
$ bin/docker-compose exec -it mongo mongosh -u {{YOUR-ADMIN-USERNAME}} -p

# Vaihda "admin"-tietokantaan käyttämällä
overleaf [direct: primary] sharelatex> use admin
vaihdettu tietokantaan admin
overleaf [direct: primary] admin> 

# Luo uusi rooli, jolla on oikeus käyttää "getParamter". Kopioi ja liitä alla oleva funktio kuoreen ja paina Enter-näppäintä

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

# Vaihda takaisin "sharelatex"-tietokantaan 
use sharelatex
vaihdettu tietokantaan sharelatex
overleaf [direct: primary] sharelatex> 

# Määritä uusi "clusterParameterReader"-rooli tietokantasi käyttäjälle kopioimalla ja liittämällä alla oleva funktio kuoreen ja painamalla Enter-näppäintä 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Kirjoita exit ja paina Enter poistuaksesi MongoDB-kuoresta
# Suorita bin/up -d käynnistääksesi käyttöönotto-pinon
$ 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/fi/yllapito/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.
