> 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/id/pemeliharaan/updating-mongodb.md).

# Memperbarui MongoDB

{% hint style="info" %}
Setiap rilis baru Server CE/Server Pro akan menunjukkan perubahan apa pun pada versi MongoDB yang didukung di dalam [catatan rilis](https://docs.overleaf.com/on-premises/release-notes).
{% endhint %}

### Apakah saya harus memperbarui MongoDB?

Anda sebaiknya **hanya** mempertimbangkan untuk memperbarui versi MongoDB Anda jika Anda berencana meningkatkan instance Server CE/Server Pro Anda.

Jika Anda menjalankan versi MongoDB yang lebih baru daripada yang direkomendasikan untuk versi Anda saat ini (atau target), tidak perlu melakukan perubahan apa pun.

{% hint style="warning" %}
Anda sebaiknya tidak pernah menurunkan versi MongoDB Anda.
{% endhint %}

Jika Anda mengalami masalah tertentu yang menurut Anda mungkin terkait dengan versi MongoDB Anda saat ini, jangan ragu untuk [membuat issue](https://github.com/overleaf/overleaf/issues) jika Anda pengguna Server CE atau hubungi Dukungan Overleaf jika Anda pengguna Server Pro.

### Memeriksa versi MongoDB Anda

Membuka `mongo` shell seharusnya langsung menampilkan versi saat ini.

Pengguna Overleaf Toolkit:

```bash
bin/docker-compose exec mongo mongod --version
versi db v5.0.24
Info Build: {
    "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"
    }
}
```

Pengguna Docker Compose:

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

```

### Proses pembaruan

Memperbarui versi MongoDB selama peningkatan instance Server CE/Server Pro Anda adalah sebagai berikut:

1. Tentukan versi Server CE/Server Pro yang ingin Anda tingkatkan.
2. Cari versi MongoDB yang direkomendasikan oleh rilis Server CE/Server Pro Overleaf tertentu tersebut.
3. Ikuti petunjuk untuk memperbarui MongoDB ke versi target.
4. Tingkatkan versi image Server CE/Server Pro dan mulai ulang instance.

Rekomendasi kami adalah selalu meningkatkan **Server CE/Server Pro** ke versi terbaru yang tersedia, karena selalu dijamin didukung (hanya untuk pengguna Server Pro).

{% hint style="danger" %}
Saat melakukan peningkatan Server CE/Pro, kami menyarankan untuk meningkatkan ke rilis terbaru dari versi utama yang diterapkan **sebelum** meningkat ke rilis terbaru dari **berikutnya** versi utama. Jika deployment Anda tertinggal lebih dari satu versi utama dari yang terbaru, Anda akan diwajibkan melakukan peningkatan bertahap.

Misalnya, jika Anda menjalankan 3.5.10, Anda perlu meningkat ke 3.5.13 -> Lakukan migrasi Full Project History -> 4.2.9 -> 5.5.4.

Anda sebaiknya **jangan pernah** melewatkan versi utama (3.5.10 -> 5.5.4). Jika Anda menggunakan Toolkit, dan tertinggal lebih dari satu versi utama dari yang terbaru, Anda harus **tidak** menggunakan `bin/upgrade` skrip karena Anda harus melakukan peningkatan bertahap secara manual.
{% endhint %}

{% hint style="warning" %}
Penting untuk memastikan bahwa Anda mengambil [cadangan yang konsisten](/on-premises/id/pemeliharaan/data-and-backups.md#performing-a-consistent-backup) **sebelum** setiap peningkatan versi utama agar Anda dapat melakukan rollback jika diperlukan.
{% endhint %}

#### Informasi dukungan versi

Jika Anda memutuskan untuk menggunakan versi yang lebih lama, tabel ini menunjukkan versi MongoDB yang direkomendasikan untuk rilis Server CE/Server Pro yang lebih lama, tetapi Anda sebaiknya **jangan pernah** menurunkan versi MongoDB Anda.

<table><thead><tr><th width="175">Server CE/Server Pro</th><th width="139" align="center">Versi MongoDB</th><th align="center">Versi Kompatibilitas Fitur Minimum</th><th align="center">Versi Maksimum yang Didukung oleh Driver 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 hingga 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" %}
Versi kompatibilitas fitur minimum di atas didasarkan pada versi MongoDB yang sesuai yang direkomendasikan untuk digunakan dengan versi Overleaf yang ditampilkan. Jika Anda berencana menggunakan versi yang lebih tinggi, MongoDB akan memiliki persyaratan minimum tersendiri.
{% endhint %}

Anda dapat melihat tabel kompatibilitas yang menentukan versi driver MongoDB Node.js yang didukung untuk digunakan dengan MongoDB [di sini](https://www.mongodb.com/docs/drivers/node/current/reference/compatibility/).

Anda dapat melihat status akhir masa pakai untuk setiap versi MongoDB [di sini](https://endoflife.date/mongodb).

#### Meningkatkan MongoDB

MongoDB memerlukan **peningkatan bertahap**. Artinya, Anda tidak bisa langsung berpindah dari, misalnya `4.0` ke `5.0`. Anda perlu terlebih dahulu memperbarui `4.2` ke `4.4`, lalu `5.0`.

{% hint style="info" %}
MongoDB menggunakan angka genap untuk versi stabilnya.
{% endhint %}

#### **Instruksi pembaruan saat menjalankan MongoDB di luar Docker**

Berikut adalah tautan ke instruksi pembaruan dari mongodb.com saat meningkatkan MongoDB.

* [Catatan rilis MongoDB - meningkatkan MongoDB dari `4.2` ke `4.4`](https://www.mongodb.com/docs/v4.4/release-notes/4.4-upgrade-standalone/)
* [Catatan rilis MongoDB - meningkatkan MongoDB dari `4.4` ke `5.0`](https://www.mongodb.com/docs/v5.0/release-notes/5.0-upgrade-replica-set/)
* [Catatan rilis MongoDB - meningkatkan MongoDB dari `5.0` ke `6.0`](https://www.mongodb.com/docs/v6.0/release-notes/6.0-upgrade-replica-set/)
* [Catatan rilis MongoDB - meningkatkan MongoDB dari `6.0` ke `7.0`](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set)
* [Catatan rilis MongoDB - meningkatkan MongoDB dari `7.0` ke `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" %}
Instruksi untuk `5.0` dan yang lebih tinggi mengarah ke instalasi replica set, bukan standalone. Karena Server Pro/CE 4.0.1+ menggunakan transaksi, MongoDB perlu dijalankan sebagai replica set.
{% endhint %}

{% hint style="warning" %}
Dokumentasi untuk MongoDB 3.2 hingga 4.2 kini tersedia melalui <https://www.mongodb.com/docs/legacy/>
{% endhint %}

**Instruksi Dasar**

Dalam kebanyakan kasus, pembaruan memerlukan penyiapan flag kompatibilitas sebelum benar-benar memperbarui versi mongo. Langkah-langkahnya sebagai berikut:

1. Setel flag kompatibilitas seperti yang dijelaskan dalam catatan rilis MongoDB (lihat contoh di bawah).
2. Kemudian perbarui image mongo:
   1. **Pengguna Toolkit** Perbarui `MONGO_VERSION`, misalnya `MONGO_VERSION=6.0`
   2. **Pengguna Docker Compose** Perbarui versi dari `mongo` tag image,\
      misalnya `services -> mongo -> image: mongo:6.0`;

**Contoh: Meningkatkan MongoDB dari `5.0` ke `6.0`**

Mari mulai dengan memastikan bahwa kita menjalankan MongoDB `6.0`:

Pengguna Overleaf Toolkit:

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

Pengguna Docker Compose:

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

Menurut [instruksi peningkatan](https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/#upgrade-version-path), satu-satunya persyaratan adalah memiliki `featureCompatibilityVersion` disetel ke `5.0`. Kami melakukannya dengan membuka shell MongoDB dan menjalankan perintah yang ditunjukkan:

Pengguna Overleaf Toolkit:

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

{% hint style="info" %}
Pengguna Docker Compose dapat menjalankan `docker compose exec mongo mongosh` untuk mendapatkan shell dan menjalankan perintah yang sama seperti pengguna Toolkit.
{% endhint %}

Pengguna Overleaf Toolkit:

Kemudian kita akan menghentikan instance Server CE/Server Pro dan MongoDB menggunakan `bin/stop` perintah, setel `MONGO_VERSION=6.0` di `config/overleaf.rc`, lalu mulai ulang `mongo` layanan menggunakan `bin/up mongo`) untuk memverifikasi bahwa pembaruan berjalan lancar.

Akhirnya, kita akan memperbarui versi image Server CE/Server Pro ke versi target kita dan membuat ulang semua layanan menggunakan `bin/up -d` perintah.

Pengguna Docker Compose:

Kemudian kita akan menghentikan instance Server CE/Server Pro dan MongoDB menggunakan `docker compose stop` perintah, perbarui [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) file agar menggunakan `image: mongo:6.0`, lalu mulai ulang `mongo` layanan menggunakan `docker compose up mongo` perintah untuk memverifikasi bahwa pembaruan berjalan lancar.

Akhirnya, kita akan memperbarui versi image Server CE/Server Pro ke versi target kita dan membuat ulang semua layanan menggunakan `docker compose up` perintah.

**Contoh: Meningkatkan MongoDB dari `6.0` ke `7.0` (pengguna Toolkit)**

Mulailah dengan memastikan bahwa Anda menjalankan MongoDB `6.0` menggunakan `mongod --version` perintah di atas.

Menurut [instruksi peningkatan](https://www.mongodb.com/docs/manual/release-notes/7.0-upgrade-replica-set/#std-label-7.0-upgrade-replica-set), satu-satunya persyaratan adalah memiliki `featureCompatibilityVersion` disetel ke `6.0`. Kami melakukannya dengan membuka shell MongoDB dan menjalankan perintah `db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })` .

Pengguna Overleaf Toolkit:

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

Kemudian kita akan menghentikan instance Server CE/Server Pro dan MongoDB menggunakan `bin/stop` perintah, setel `MONGO_VERSION=7.0` di `config/overleaf.rc`, lalu mulai ulang `mongo` layanan menggunakan `bin/up mongo`) untuk memverifikasi bahwa pembaruan berjalan lancar.

Akhirnya, kita akan memperbarui versi image Server CE/Server Pro ke versi target kita dan membuat ulang semua layanan menggunakan `bin/up -d` perintah.

**Contoh: Meningkatkan MongoDB dari `7.0` ke `8.0` (pengguna Toolkit)**

Mulailah dengan memastikan bahwa Anda menjalankan MongoDB `7.0` menggunakan `mongod --version` perintah di atas.

Menurut [instruksi peningkatan](https://www.mongodb.com/docs/manual/release-notes/8.0-upgrade-replica-set/#std-label-8.0-upgrade-replica-set), satu-satunya persyaratan adalah memiliki `featureCompatibilityVersion` disetel ke `7.0`. Kami melakukannya dengan membuka shell MongoDB dan menjalankan perintah `db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })`. Perhatikan bahwa ini sekarang memerlukan tambahan `confirm: true` parameter.

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

Kemudian kita akan menghentikan instance Server CE/Server Pro dan MongoDB menggunakan `bin/stop` perintah, setel `MONGO_VERSION=8.0` di `config/overleaf.rc`, lalu mulai ulang `mongo` layanan menggunakan `bin/up mongo`) untuk memverifikasi bahwa pembaruan berjalan lancar.

Akhirnya, kita akan memperbarui versi image Server CE/Server Pro ke versi target kita dan membuat ulang semua layanan menggunakan `bin/up -d` perintah.

#### Perintah yang setara untuk pengguna docker compose

Bagi pengguna docker compose, perintah yang setara adalah:

* `docker compose exec mongo mongod --version` untuk menampilkan versi mongo
* `docker compose exec mongo mongosh` untuk memulai shell mongo untuk perintah admin
* `docker compose stop` perintah untuk menghentikan server
* Edit [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) file agar menggunakan `image: mongo:6.0` untuk memperbarui versi mongo
* `docker compose up mongo` untuk memulai ulang layanan mongo dan memverifikasi bahwa pembaruan berjalan lancar
* Edit [`docker-compose.yml`](https://github.com/overleaf/overleaf/blob/4b1babd4ea634ab12c54e9a9aea7db0e8a500941/docker-compose.yml) file agar menggunakan `image: sharelatex:VERSION` untuk memperbarui versi image
* `docker compose up` untuk membuat ulang semua layanan.

### Membuat peran kustom

Dalam versi `5.5.1`, kami memperkenalkan pemeriksaan saat startup untuk memverifikasi versi kompatibilitas fitur untuk MongoDB. Jika database MongoDB Anda menggunakan autentikasi (mis., autentikasi dasar), `sharelatex` container mungkin tidak akan mulai, menampilkan kesalahan izin "*tidak diizinkan pada admin untuk menjalankan perintah*" kesalahan izin.

Untuk mengatasi ini, Anda dapat membuat peran baru di MongoDB dan menetapkannya ke akun pengguna yang digunakan untuk mengakses basis data menggunakan petunjuk di bawah ini, atau setel `ALLOW_MONGO_ADMIN_CHECK_FAILURES=true` agar pemeriksaan dapat gagal tanpa mencegah deployment dimulai.

{% hint style="success" %}
Peran baru ini **hanya** memberikan izin untuk membaca parameter server MongoDB di seluruh cluster dan dapat digunakan kembali untuk tujuan pemantauan,
{% endhint %}

{% code overflow="wrap" %}

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

# Beralih ke database "admin" menggunakan
overleaf [direct: primary] sharelatex> use admin
beralih ke db admin
overleaf [direct: primary] admin> 

# Buat peran baru dengan izin untuk menggunakan "getParamter". Salin dan tempel fungsi di bawah ini ke shell dan tekan tombol enter

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

# Beralih kembali ke database "sharelatex" 
use sharelatex
beralih ke db sharelatex
overleaf [direct: primary] sharelatex> 

# Tetapkan peran baru "clusterParameterReader" ke pengguna basis data Anda dengan menyalin dan menempelkan fungsi di bawah ini ke shell lalu tekan tombol enter 
db.grantRolesToUser(
  "{{YOUR-DATABASE-USER}}",
  [
    { role: "clusterParameterReader", db: "admin" }
  ]
);

# Ketik exit lalu tekan enter untuk keluar dari shell MongoDB
# Jalankan bin/up -d untuk memulai stack deployment
$ 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/id/pemeliharaan/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.
