> 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/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 proyek di instance Anda serta backend penyimpanan yang digunakan oleh history store untuk chunk (sebagaimana didefinisikan dalam `OVERLEAF_HISTORY_CHUNKS_BUCKET`).

Proses pemulihan akan menunda start aplikasi di dalam container Server Pro. Situs akan tampak offline selama waktu tersebut. Kami hanya mendukung menjalankan pemulihan dari satu instance container Server Pro, semua worker penskalaan horizontal lainnya harus offline.

Anda dapat menghentikan dan melanjutkan proses pemulihan jika diperlukan.

Berdasarkan pengujian performa kami, proses pemulihan dapat memproses sekitar 10 ribu proyek kecil per menit pada perangkat keras modern (kecepatan clock CPU 3GHz dan penyimpanan NVMe lokal). Sebagai contoh, untuk instance dengan 100 ribu proyek, jadwalkan jendela pemeliharaan yang memungkinkan downtime minimal 10+2 menit. Gunakan kueri berikut untuk memperkirakan jumlah proyek 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 mulai. Pelanggan Server Pro sangat dipersilakan untuk menghubungi <support@overleaf.com> jika ada pertanyaan.

### Proses pemulihan

{% stepper %}
{% step %}

#### Unduh image rilis

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

{% step %}

#### Identifikasi beberapa proyek

Identifikasi beberapa proyek berdasarkan id yang tidak memiliki riwayat; idealnya Anda memiliki izin untuk melakukan perubahan pada salah satunya.
{% endstep %}

{% step %}

#### Jadwalkan pemeliharaan

Jadwalkan jendela pemeliharaan untuk downtime.
{% endstep %}

{% step %}

#### Hentikan semua worker kecuali satu

Hentikan semua worker kecuali satu saat menggunakan pengaturan 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 koneksi semua pengguna secara manual melalui panel admin di `https://my-server-pro.example.com/admin#open-close-editor` pada 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, normally up
   ```
4. Hentikan container git-bridge jika diaktifkan.

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

   Anda dapat mengulangi perintah saat terjadi kesalahan. Jika Anda melihat nilai non-nol `failureCount` pada beberapa eksekusi 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":"finished flushing all projects","time":"...","v":0}
   Selesai mengosongkan semua proyek
   </code></pre>
6. Jika Anda tidak pernah menjalankan 5.0.2: Pastikan semua perubahan telah dikosongkan dari redis.

   Jika Anda mendapatkan keluaran 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 adanya keluaran dari redis-cli menandakan keberhasilan, periksa kode keluar redis-cli berikutnya, seharusnya nol
   $ echo $?
   0
   </code></pre>
7. Coba kosongkan perubahan riwayat yang masih tertunda.

   Ini harus dilakukan dengan flush semampunya karena beberapa proyek memiliki riwayat yang rusak akibat migrasi database yang buruk. Setiap kegagalan akan ditangani dengan sinkronisasi ulang riwayat 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 %}

#### Buat cadangan

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

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

{% step %}

#### Pemulihan otomatis

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

{% step %}

#### Ikuti progres

Anda dapat mengikuti progres skrip dengan menampilkan bagian akhir file log `/var/lib/overleaf/data/history/doc-version-recovery.log`. Ini akan menampilkan total jumlah proyek di awal dan ringkasan setelah setiap 1000 proyek 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 menampilkan file log di atas hingga sebuah `Selesai.` baris telah tercetak atau menunggu hingga `Pemulihan versi dokumen selesai.` dicetak ke output standar container Server Pro.
{% endstep %}

{% step %}

#### Validasi proses pemulihan

Validasi proses pemulihan dengan membuka panel riwayat untuk beberapa proyek yang sebelumnya tidak memiliki riwayat.

1. Percepat sinkronisasi ulang untuk proyek yang akan diuji (mereka pada akhirnya akan diproses, tetapi kita 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 untuk setiap project-id yang akan diuji, ganti `000000000000000000000000` dengan satu project-id setiap kali.)
2. Buka editor proyek untuk proyek-proyek `https://my-server-pro.example.com/project/000000000000000000000000`
3. Buka panel "History" untuk proyek tersebut dan lihat konten terbaru.
4. Opsional: Tutup kembali panel "History". Buat perubahan kode, seperti menambahkan komentar pada header.
5. Opsional: Jalankan kompilasi ulang untuk memicu pengosongan perubahan lokal. Buka lagi panel "History" dan lihat perubahannya. Setelah selesai, batalkan perubahan tersebut.
   {% 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 melakukan sinkronisasi ulang riwayat untuk semua proyek di latar belakang dengan konkurensi 1. Ini akan menghasilkan beban dasar yang sedikit lebih tinggi. (Anda dapat memulai ulang instance, tetapi proses sinkronisasi ulang harus dimulai dari awal lagi.)
{% endstep %}

{% step %}

#### Beritahu kami saat Anda selesai

Pelanggan Server Pro: Harap beri tahu tim dukungan ketika 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://overleaf-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.
