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

# MongoDB:n päivittäminen

{% hint style="info" %}
Mikä tahansa Server CE:n/Server Pron uusi julkaisu ilmoittaa tuetun MongoDB-version muutokset sen [julkaisutiedoissa](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

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

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

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

{% hint style="warning" %}
Sinun ei pitäisi koskaan alentaa MongoDB-versiotasi.
{% endhint %}

Jos kohtaat tietyn ongelman, jonka uskot saattavan liittyä nykyiseen MongoDB-versioosi, voit vapaasti [ilmoittaa ongelmasta](https://github.com/overleaf/overleaf/issues) jos olet Server CE -käyttäjä, tai ota yhteyttä Overleaf-tukeen, jos olet Server Pro -käyttäjä.

### MongoDB-version tarkistaminen

Shellin avaamisen pitäisi `mongo` näyttää nykyinen versio heti.

Overleaf Toolkitin käyttäjät:

```bash
bin/docker-compose exec mongo mongod --version
db version v5.0.24
Kokoamistiedot: {
    "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 version v5.0.24
Kokoamistiedot: {
    "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 -instanssin päivityksen aikana on seuraava:

1. Päätä, mihin Server CE/Server Pro -versioon aiot päivittää.
2. Etsi 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äjille).

{% hint style="danger" %}
Kun teet Server CE/Pro -päivityksen, suosittelemme päivittämään ensin käytössä olevan pääversion viimeisimpään julkaisuun **ennen** päivittämistä viimeisimpään julkaisuun **seuraavan** pääversion. Jos käyttöönotto on yli yhden pääversion jäljessä uusimmasta, sinun on tehtävä monivaiheinen päivitys.

Esimerkiksi, jos 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** ohittaa pääversioita (3.5.10 -> 5.5.4). Jos käytät Toolkitia ja olet yli yhden pääversion jäljessä uusimmasta, sinun täytyy **ei** käyttää `bin/upgrade` skriptiä, sillä sinun on tehtävä manuaalinen monivaiheinen päivitys.
{% endhint %}

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

#### Versiotuen tiedot

Jos päätät siirtyä aiempaan versioon, tämä taulukko näyttää suositellun MongoDB-version Server CE/Server Pron aiemmille julkaisuversioille, mutta sinun ei 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 tukema suurin 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, joka määrittää MongoDB:n kanssa käytettävän MongoDB Node.js -ajurin tuetut versiot [tässä](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

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

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

MongoDB vaatii **vaiheittaiset päivitykset**. Se tarkoittaa, ettet voi siirtyä suoraan esimerkiksi `4.0` versioon `5.0`. Sinun on ensin päivitettävä `4.2` versioon `4.4`, ja sitten `5.0`.

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

#### **Päivitysohjeet MongoDB:n ajamiseen Dockerin ulkopuolella**

Tässä ovat mongodb.comin päivitysohjeiden linkit 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)

{% hint style="info" %}
Ohjeet versiolle `5.0` ja sitä uudemmat viittaavat replica set -asennukseen itsenäisen asennuksen sijaan. Koska Server Pro/CE 4.0.1+ käyttää transaktioita, MongoDB on ajettava replica setinä.
{% endhint %}

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

**Perusohjeet**

Useimmissa tapauksissa päivitys edellyttää yhteensopivuuslipun määrittämistä 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-kuva:
   1. **Toolkitin käyttäjät** Päivitä `MONGO_VERSION`, esim. `MONGO_VERSION=6.0`
   2. **Docker Compose -käyttäjät** Päivitä `mongo` kuvatunnisteen 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
bin/docker-compose exec mongo mongod --version
# db version v5.0.24
```

Docker Compose -käyttäjät:

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

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

Overleaf Toolkitin käyttäjät:

```bash
bin/mongo
# MongoDB shell version v5.0.24
# ...
# overleaf:PRIMARY> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
# { 
# "ok" : 1,
# ...
# }
overleaf:PRIMARY> exit
# näkemiin
```

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

Overleaf Toolkitin käyttäjät:

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

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

Docker Compose -käyttäjät:

Sitten pysäytämme Server CE/Server Pro- ja MongoDB-instanssit käyttämällä `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ämällä `docker compose up mongo` komentoa varmistaaksesi, että päivitys sujui ongelmitta.

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

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

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

Päivitysohjeiden [mukaan](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` on asetettu arvoon `6.0`. Teemme sen avaamalla MongoDB-shellin ja suorittamalla komennon `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Overleaf Toolkitin käyttäjät:

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

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

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

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

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

Päivitysohjeiden [mukaan](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` on asetettu arvoon `7.0`. Teemme sen avaamalla MongoDB-shellin ja suorittamalla komennon `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Huomaa, että tämä edellyttää nyt lisäksi `confirm: true` parametria.

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

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

Lopuksi päivitämme Server CE/Server Pro -kuvan version kohdeversion ja luomme kaikki palvelut uudelleen käyttämällä `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` näyttämään mongo-version
* `docker compose exec mongo mongosh` käynnistämään mongo-shellin 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` mongo-version päivittämiseksi
* `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` kuvaversion päivittämiseksi
* `docker compose up` luodaksesi kaikki palvelut uudelleen.

### Mukautetun roolin luominen

Versiossa `5.5.1`, otimme käyttöön käynnistystarkistuksen MongoDB:n ominaisuuksien yhteensopivuusversion varmistamiseksi. Jos MongoDB-tietokantasi käyttää tunnistautumista (esim. perus-tunnistautumista), `sharelatex` säiliö ei ehkä käynnisty ja näyttää "*not authorized on admin to execute command*"-käyttöoikeusvirheen.

Voit ratkaista tämän joko luomalla uuden roolin MongoDB:ssä ja määrittämällä sen alla olevien ohjeiden avulla tietokannan käyttämiseen käytetylle käyttäjätilille 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 kattavia MongoDB-palvelimen parametreja, ja sitä voitaisiin käyttää uudelleen valvontatarkoituksiin,
{% endhint %}

{% code overflow="wrap" %}

```bash
# Toolkitin 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"-toimintoa. Kopioi ja liitä alla oleva funktio shelliin ja paina Enteriä

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 tietokannan käyttäjällesi kopioimalla ja liittämällä alla oleva funktio shelliin ja painamalla Enteriä 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

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