> 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/id/dukungan/support-guides/doc-version-recovery.md).

# (Migrasi v5.0.1) Pemulihan versi dokumen

{% hint style="info" %}
Jika Anda tidak pernah menjalankan Server Pro versi 5.0.1 atau Community Edition versi 5.0.1, atau Anda memulai instance baru dengan 5.0.1, Anda tidak perlu menjalankan proses pemulihan ini.
{% endhint %}

**Pembaruan pada halaman ini:**

* (2024-04-22 13:40 BST): Menambahkan langkah "Hentikan pembaruan baru agar tidak masuk ke sistem dan kosongkan semua perubahan ke MongoDB".
* (2024-04-23 11:45 BST): Memperhitungkan flush yang rusak di 5.0.1 dan melewati flush saat 5.0.2 dimulai.

Durasi pemulihan akan bergantung pada jumlah dan ukuran project di instance Anda serta backend penyimpanan yang digunakan oleh history store untuk chunk (sebagaimana didefinisikan dalam `OVERLEAF_HISTORY_CHUNKS_BUCKET`).

Proses pemulihan akan menunda startup aplikasi di dalam kontainer Server Pro. Situs akan tampak offline selama waktu itu. Kami hanya mendukung menjalankan pemulihan dari satu instance kontainer Server Pro, semua worker penskalaan horizontal lainnya perlu offline.

Anda dapat menghentikan dan melanjutkan proses pemulihan jika diperlukan.

Berdasarkan pengujian performa kami, proses pemulihan dapat memproses sekitar 10 ribu project kecil per menit pada perangkat keras modern (kecepatan clock CPU 3GHz dan penyimpanan NVMe lokal). Sebagai contoh, untuk instance dengan 100 ribu project, jadwalkan jendela pemeliharaan yang memungkinkan setidaknya 10+2 menit downtime. Gunakan query berikut untuk memperkirakan jumlah project di instance Anda:

{% code overflow="wrap" %}

```bash
$ docker exec mongo mongosh sharelatex --quiet --eval 'db.projects.estimatedDocumentCount() + db.deletedProjects.estimatedDocumentCount()'
```

{% endcode %}

Harap baca langkah-langkah pemulihan berikut secara lengkap sebelum Anda memulai. Pelanggan Server Pro sangat dipersilakan untuk menghubungi <support@overleaf.com> dengan pertanyaan apa pun.

### Proses pemulihan

{% stepper %}
{% step %}

#### Ambil image rilis

Ambil `5.0.3` image rilis.
{% endstep %}

{% step %}

#### Identifikasi beberapa project

Identifikasi beberapa project berdasarkan id yang tidak memiliki history; idealnya Anda memiliki izin untuk membuat perubahan pada salah satunya.
{% endstep %}

{% step %}

#### Jadwalkan pemeliharaan

Jadwalkan jendela pemeliharaan untuk waktu downtime.
{% endstep %}

{% step %}

#### Hentikan semua worker kecuali satu

Hentikan semua worker kecuali satu saat menggunakan konfigurasi penskalaan horizontal.
{% endstep %}

{% step %}

#### Hentikan pembaruan baru dan kosongkan semua perubahan ke MongoDB

Hentikan pembaruan baru agar tidak masuk ke sistem dan kosongkan semua perubahan ke MongoDB:

1. Tutup editor dan putuskan semua pengguna secara manual melalui panel admin di `https://my-server-pro.example.com/admin#open-close-editor` di tab "Open/Close Editor".
2. Hentikan layanan Websocket/real-time.

   ```bash
   $ docker exec sharelatex sv stop real-time-overleaf
   ```
3. Tunggu hingga layanan real-time keluar, seperti ditunjukkan oleh `down:`.

   ```bash
   $ docker exec sharelatex sv status real-time-overleaf
   run: real-time-sharelatex: (pid 394) 50s, want down, got TERM
   # tunggu sedikit lebih lama...

   $ docker exec sharelatex sv status real-time-overleaf
   down: real-time-sharelatex: 7s, biasanya aktif
   ```
4. Hentikan kontainer git-bridge jika diaktifkan.

   ```bash
   $ docker stop git-bridge
   ```
5. Jika Anda tidak pernah menjalankan 5.0.2: Lakukan flush manual untuk pembaruan dokumen dan tunggu hingga selesai dengan sukses.

   Anda dapat mengulangi perintah saat terjadi error. Jika Anda melihat `failureCount` nilai failureCount yang bukan nol pada beberapa kali run berturut-turut, harap hentikan migrasi (pulihkan layanan melalui `docker restart git-bridge sharelatex`) dan hubungi dukungan.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">$ docker exec sharelatex bash -c 'source /etc/container_environment.sh &#x26;&#x26; source /etc/overleaf/env.sh &#x26;&#x26; cd services/document-updater &#x26;&#x26; LOG_LEVEL=info node scripts/flush_all.js'
   ...
   {"name":"default","hostname":"...","pid":324,"level":30,"successCount":...,"failureCount":0,"msg":"selesai mengosongkan semua project","time":"...","v":0}
   Selesai mengosongkan semua project
   </code></pre>
6. Jika Anda tidak pernah menjalankan 5.0.2: Pastikan semua perubahan telah di-flush keluar dari Redis.

   Jika Anda mendapatkan output apa pun dari `redis-cli`, harap hentikan migrasi (pulihkan layanan melalui `docker restart git-bridge sharelatex`) dan hubungi dukungan.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">$ docker exec redis redis-cli --scan --pattern 'DocVersion:*'
   # tidak ada output dari redis-cli menandakan keberhasilan, periksa exit code dari redis-cli berikutnya, seharusnya nol
   $ echo $?
   0
   </code></pre>
7. Coba flush semua perubahan history yang masih tertunda.

   Ini perlu menjadi flush sebisa mungkin karena beberapa project memiliki history yang rusak akibat migrasi database yang bermasalah. Setiap kegagalan akan ditangani dengan sinkronisasi ulang history pada akhir proses pemulihan.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">$ docker exec sharelatex bash -c 'source /etc/container_environment.sh &#x26;&#x26; source /
   </code></pre>

{% endstep %}

{% step %}

#### Cadangkan

Pertimbangkan untuk membuat [cadangan yang konsisten](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) cadangan instance.
{% endstep %}

{% step %}

#### Tingkatkan versi

Tingkatkan ke versi `5.0.3`.
{% endstep %}

{% step %}

#### Pemulihan otomatis

Proses pemulihan berjalan otomatis saat kontainer dimulai.
{% endstep %}

{% step %}

#### Pantau progres

Anda dapat mengikuti progres skrip dengan men-tail file log `/var/lib/overleaf/data/history/doc-version-recovery.log`. Ini akan mencetak total jumlah project di awal dan ringkasan setelah setiap 1000 project diproses.

{% code overflow="wrap" %}

```bash
$ docker exec sharelatex tail --retry --follow /var/lib/overleaf/data/history/doc-vers
```

{% endcode %}
{% endstep %}

{% step %}

#### Tunggu hingga proses pemulihan selesai

Tunggu hingga proses pemulihan selesai dengan men-tail file log di atas hingga sebuah `Selesai.` baris telah dicetak atau menunggu hingga `Pemulihan versi dokumen selesai.` dicetak ke output standar kontainer Server Pro.
{% endstep %}

{% step %}

#### Validasi proses pemulihan

Validasi proses pemulihan dengan membuka panel history untuk beberapa project yang sebelumnya tidak memiliki history.

1. Percepat resinkronisasi untuk project yang akan diuji (Mereka pada akhirnya akan diproses, tetapi kami tidak ingin menunggu giliran mereka.)

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">$ docker exec sharelatex curl -X POST --silent "http://127.0.0.1:3054/project/000000000000000000000000/resync?force=true"
   </code></pre>

   (Ulangi dengan setiap project-id yang akan diuji, ganti `000000000000000000000000` dengan satu project-id setiap kali.)
2. Buka editor project untuk project `https://my-server-pro.example.com/project/000000000000000000000000`
3. Buka panel "History" untuk project dan lihat konten terbaru.
4. Opsional: Tutup lagi panel "History". Lakukan perubahan kode, seperti menambahkan komentar ke header.
5. Opsional: Lakukan re-compile untuk memicu flush atas perubahan lokal. Buka lagi panel "History" dan lihat perubahannya. Setelah selesai, batalkan perubahan.
   {% endstep %}

{% step %}

#### Untuk penskalaan horizontal...

Mulai lagi worker lainnya.
{% endstep %}

{% step %}

#### Biarkan instance tetap berjalan

Harap biarkan instance yang menjalankan proses pemulihan tetap berjalan. Instance tersebut akan men-sinkronkan ulang history untuk semua project di latar belakang dengan concurrency 1. Ini akan menyebabkan beban dasar yang sedikit lebih tinggi. (Anda dapat memulai ulang instance, tetapi ia harus memulai ulang dari awal untuk resinkronisasi.)
{% endstep %}

{% step %}

#### Beri tahu kami saat Anda selesai

Pelanggan Server Pro: Harap beri tahu tim dukungan saat Anda telah menyelesaikan proses pemulihan.
{% endstep %}
{% endstepper %}


---

# 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/id/dukungan/support-guides/doc-version-recovery.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.
