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

# MongoDB:n päivittäminen

<Info>
  Jokainen Server CE:n/Server Pron uusi julkaisu ilmoittaa [julkaisutiedoissaan](https://docs.overleaf.com/on-premises/release-notes) kaikista muutoksista tuettuun MongoDB-versioon.
</Info>

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

MongoDB-version päivittämistä kannattaa harkita **vain**, jos aiot päivittää Server CE- tai Server Pro -instanssisi.

Jos käyttämäsi MongoDB-versio on uudempi kuin nykyiselle (tai tavoitteena olevalle) versiollesi suositeltu, muutoksia ei tarvita.

<Warning>
  MongoDB-versiota ei pidä koskaan alentaa.
</Warning>

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

### MongoDB-version tarkistaminen

`mongo`-komentotulkin avaaminen tulostaa heti nykyisen version.

Overleaf Toolkitin käyttäjät:

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

Docker Composen käyttäjät:

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

```

### Päivitysprosessi

MongoDB-version päivittäminen Server CE- tai Server Pro -instanssin päivityksen yhteydessä tapahtuu seuraavasti:

1. Päätä, mihin Server CE:n/Server Pron versioon aiot päivittää.
2. Selvitä, mitä MongoDB-versiota kyseinen Overleaf Server CE:n/Server Pron julkaisu suosittelee.
3. Päivitä MongoDB tavoiteversioon ohjeiden mukaisesti.
4. Päivitä Server CE:n/Server Pron imagen versio ja käynnistä instanssi uudelleen.

Suosittelemme päivittämään **Server CE:n/Server Pron** aina uusimpaan saatavilla olevaan versioon, koska sen tuki on aina taattu (koskee vain Server Pro -käyttäjiä).

<Danger>
  Server CE:tä/Prota päivitettäessä suosittelemme päivittämään käytössä olevan pääversion uusimpaan julkaisuun **ennen** päivittämistä **seuraavan** pääversion uusimpaan julkaisuun. Jos käyttöönottosi on yli yhden pääversion jäljessä uusimmasta, sinun on tehtävä päivitys useassa vaiheessa.

  Jos käytössäsi on esimerkiksi 3.5.10, sinun on päivitettävä versioon 3.5.13 -> suoritettava koko projektihistorian siirto -> 4.2.9 -> 5.5.4.

  Pääversioita ei pidä **koskaan** ohittaa (3.5.10 -> 5.5.4). Jos käytät Toolkitia ja olet yli yhden pääversion jäljessä uusimmasta, et **saa** käyttää `bin/upgrade`-skriptiä, koska sinun on tehtävä manuaalinen monivaiheinen päivitys.
</Danger>

<Warning>
  On tärkeää ottaa [johdonmukainen varmuuskopio](/fi/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) **ennen** jokaista pääversion päivitystä, jotta voit tarvittaessa palata takaisin.
</Warning>

#### Versioiden tukitiedot

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

<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" }}>MongoDB-versio</th><th style={{ textAlign: "center" }}>Ominaisuuksien yhteensopivuusversio vähintään</th><th style={{ textAlign: "center" }}>Node.js-ajurin tukema enimmäisversio</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–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>
  Yllä mainittu ominaisuuksien yhteensopivuusversion vähimmäisarvo perustuu vastaavaan MongoDB-versioon, jota suositellaan käytettäväksi kyseisen Overleaf-version kanssa. Jos aiot käyttää uudempaa versiota, MongoDB:llä on omat vähimmäisvaatimuksensa.
</Danger>

Yhteensopivuustaulukon, josta näkyvät MongoDB:n kanssa käytettäväksi tuetut MongoDB Node.js -ajurin versiot, löydät [täältä](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

MongoDB:n kunkin version elinkaaren päättymistilanteen näet [täältä](https://endoflife.date/mongodb).

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

MongoDB edellyttää **vaiheittaisia päivityksiä**. Tämä tarkoittaa, että et voi siirtyä suoraan esimerkiksi versiosta `4.0` versioon `5.0`. Sinun on ensin päivitettävä `4.2`:sta `4.4`:ään ja sitten `5.0`:aan.

<Info>
  MongoDB käyttää vakaissa versioissaan parillisia numeroita.
</Info>

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

Tässä ovat linkit mongodb.comin päivitysohjeisiin MongoDB:tä päivitettäessä.

* [MongoDB:n julkaisutiedot – MongoDB:n päivittäminen versiosta `4.2` versioon `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` versioon `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` versioon `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` versioon `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` versioon `8.0`](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set)

<Info>
  Versioiden `5.0` ja uudempien ohjeet koskevat replikajoukkoasennusta (replica set) erillisasennuksen sijaan. Koska Server Pro/CE 4.0.1+ käyttää transaktioita, MongoDB:tä on ajettava replikajoukkona.
</Info>

<Warning>
  MongoDB 3.2–4.2 -versioiden dokumentaatio on nyt saatavilla osoitteessa [https://www.mongodb.com/docs/legacy/](https://www.mongodb.com/docs/legacy/)
</Warning>

**Perusohjeet**

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

1. Aseta yhteensopivuuslippu MongoDB:n julkaisutiedoissa kuvatulla tavalla (katso alla olevat esimerkit).
2. Päivitä sitten mongo-image:
   1. **Toolkitin käyttäjät** Päivitä `MONGO_VERSION`, esim. `MONGO_VERSION=6.0`
   2. **Docker Composen käyttäjät** Päivitä `mongo`-imagen tunnisteen (tag) versio,\
      esim. `services -> mongo -> image: mongo:6.0`;

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

Aloitetaan varmistamalla, että käytössä on MongoDB `6.0`:

Overleaf Toolkitin käyttäjät:

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

Docker Composen käyttäjät:

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

[Päivitysohjeiden](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path) mukaan ainoa vaatimus on, että `featureCompatibilityVersion` on asetettu arvoon `5.0`. Teemme sen avaamalla MongoDB-komentotulkin ja suorittamalla ohjeissa mainitun komennon:

Overleaf Toolkitin käyttäjät:

```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>
  Docker Composen käyttäjät voivat avata komentotulkin komennolla `docker compose exec mongo mongosh` ja suorittaa samat komennot kuin Toolkitin käyttäjät.
</Info>

Overleaf Toolkitin käyttäjät:

Pysäytämme sitten Server CE:n/Server Pron ja MongoDB:n instanssit komennolla `bin/stop`, asetamme tiedostoon `config/overleaf.rc` arvon `MONGO_VERSION=6.0` ja käynnistämme sitten `mongo`-palvelun uudelleen komennolla `bin/up mongo`) varmistaaksemme, että päivitys sujui ongelmitta.

Lopuksi päivitämme Server CE:n/Server Pron imagen version tavoiteversioomme ja luomme kaikki palvelut uudelleen komennolla `bin/up -d`.

Docker Composen käyttäjät:

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

Lopuksi päivitämme Server CE:n/Server Pron imagen version tavoiteversioomme ja luomme kaikki palvelut uudelleen komennolla `docker compose up`.

<strong>Esimerkki: MongoDB:n päivittäminen versiosta `6.0` versioon `7.0` (Toolkitin käyttäjät)</strong>

Aloita varmistamalla yllä olevilla `mongod --version` -komennoilla, että käytössä on MongoDB `6.0`.

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

Overleaf Toolkitin käyttäjät:

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

Pysäytämme sitten Server CE:n/Server Pron ja MongoDB:n instanssit komennolla `bin/stop`, asetamme tiedostoon `config/overleaf.rc` arvon `MONGO_VERSION=7.0` ja käynnistämme sitten `mongo`-palvelun uudelleen komennolla `bin/up mongo`) varmistaaksemme, että päivitys sujui ongelmitta.

Lopuksi päivitämme Server CE:n/Server Pron imagen version tavoiteversioomme ja luomme kaikki palvelut uudelleen komennolla `bin/up -d`.

<strong>Esimerkki: MongoDB:n päivittäminen versiosta `7.0` versioon `8.0` (Toolkitin käyttäjät)</strong>

Aloita varmistamalla yllä olevilla `mongod --version` -komennoilla, että käytössä on MongoDB `7.0`.

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

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

Pysäytämme sitten Server CE:n/Server Pron ja MongoDB:n instanssit komennolla `bin/stop`, asetamme tiedostoon `config/overleaf.rc` arvon `MONGO_VERSION=8.0` ja käynnistämme sitten `mongo`-palvelun uudelleen komennolla `bin/up mongo`) varmistaaksemme, että päivitys sujui ongelmitta.

Lopuksi päivitämme Server CE:n/Server Pron imagen version tavoiteversioomme ja luomme kaikki palvelut uudelleen komennolla `bin/up -d`.

#### Vastaavat komennot Docker Composen käyttäjille

Docker Composen käyttäjille vastaavat komennot ovat:

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

### Mukautetun roolin luominen

Versiossa `5.5.1` otimme käyttöön käynnistyksenaikaisen tarkistuksen, joka varmistaa MongoDB:n ominaisuuksien yhteensopivuusversion. Jos MongoDB-tietokantasi käyttää todennusta (esim. perustodennusta), `sharelatex`-kontti ei ehkä käynnisty, vaan näyttää käyttöoikeusvirheen "*not authorized on admin to execute command*".

Voit ratkaista tämän joko luomalla MongoDB:hen uuden roolin ja määrittämällä sen tietokannan käyttämiseen käytettävälle käyttäjätilille alla olevien ohjeiden mukaisesti, tai asettamalla `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true`, jolloin tarkistus saa epäonnistua estämättä käyttöönoton käynnistymistä.

<Check>
  Tämä uusi rooli myöntää **ainoastaan** oikeuden lukea koko klusterin laajuisia MongoDB-palvelimen parametreja, ja sitä voidaan käyttää uudelleen myös valvontatarkoituksiin,
</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.