> 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/on-premises-cs/podpora/support-guides/doc-version-recovery.md).

# (Migrace v5.0.1) Obnovení verze dokumentu

{% hint style="info" %}
Pokud jste nikdy nespustili Server Pro verzi 5.0.1 nebo Community Edition verzi 5.0.1, nebo jste s verzí 5.0.1 založili zcela novou instanci, nemusíte tento proces obnovy spouštět.
{% endhint %}

**Aktualizace této stránky:**

* (2024-04-22 13:40 BST): Přidán krok „Zastavit příchod nových aktualizací do systému a vyprázdnit všechny změny do MongoDB“.
* (2024-04-23 11:45 BST): Zohlednit rozbité flushování ve verzi 5.0.1 a přeskočit flushování, když byla spuštěna verze 5.0.2.

Doba trvání obnovy bude záviset na počtu a velikosti projektů ve vaší instanci a na úložišti použitém history store pro chunky (jak je definováno v `OVERLEAF_HISTORY_CHUNKS_BUCKET`).

Proces obnovy zpozdí spuštění aplikace uvnitř kontejneru Server Pro. Během této doby bude stránka působit jako offline. Proces obnovy podporujeme pouze spuštěný z jedné instance kontejneru Server Pro, všichni ostatní pracovníci horizontálního škálování musí být offline.

Proces obnovy můžete v případě potřeby zastavit a obnovit.

Na základě našich výkonových testů dokáže proces obnovy na moderním hardwaru (takt CPU 3 GHz a lokální úložiště NVMe) zpracovat přibližně 10 tisíc malých projektů za minutu. Jako příklad: pro instanci se 100 tisíci projekty naplánujte údržbové okno, které umožní alespoň 10+2 min nečinnosti. K odhadu počtu projektů ve vaší instanci použijte následující dotaz:

{% code overflow="wrap" %}

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

{% endcode %}

Před zahájením si prosím důkladně přečtěte následující kroky obnovy. Zákazníci Server Pro nás mohou kdykoli kontaktovat na <support@overleaf.com> s jakýmikoli dotazy.

### Proces obnovy

{% stepper %}
{% step %}

#### Stáhnout release image

Stáhněte `5.0.3` release image.
{% endstep %}

{% step %}

#### Identifikovat několik projektů

Identifikujte několik projektů podle ID, kterým chybí historie; ideálně máte oprávnění provést změnu alespoň v jednom z nich.
{% endstep %}

{% step %}

#### Naplánovat údržbu

Naplánujte údržbové okno pro výpadek.
{% endstep %}

{% step %}

#### Zastavit všechny kromě jednoho workeru

Při použití nastavení horizontálního škálování zastavte všechny kromě jednoho workeru.
{% endstep %}

{% step %}

#### Zastavit nové aktualizace a vyprázdnit všechny změny do MongoDB

Zastavte přicházení nových aktualizací do systému a vyprázdněte všechny změny do MongoDB:

1. Uzavřete editor a ručně odpojte všechny uživatele přes administrační panel na `https://my-server-pro.example.com/admin#open-close-editor` v záložce „Open/Close Editor“.
2. Zastavte službu WebSocket/real-time.

   ```bash
   $ docker exec sharelatex sv stop real-time-overleaf
   ```
3. Počkejte, až služba real-time skončí, jak je uvedeno v `down:`.

   ```bash
   $ docker exec sharelatex sv status real-time-overleaf
   run: real-time-sharelatex: (pid 394) 50s, want down, got TERM
   # chvíli ještě počkejte...

   $ docker exec sharelatex sv status real-time-overleaf
   down: real-time-sharelatex: 7s, normally up
   ```
4. Pokud je povolen, zastavte kontejner git-bridge.

   ```bash
   $ docker stop git-bridge
   ```
5. Pokud jste nikdy nespustili verzi 5.0.2: Proveďte ruční flush aktualizací dokumentů a počkejte, až skončí úspěšně.

   V případě chyby můžete příkaz zopakovat. Pokud při opakovaných spuštěních uvidíte nenulové `failureCount` prosím zastavte migraci (obnovte služby pomocí `docker restart git-bridge sharelatex`) a obraťte se na podporu.

   <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":"ukončeno vyprázdnění všech projektů","time":"...","v":0}
   Vyprázdnění všech projektů dokončeno
   </code></pre>
6. Pokud jste nikdy nespustili verzi 5.0.2: Zajistěte, aby byly všechny změny vyprázdněny z Redisu.

   Pokud získáte jakýkoli výstup z `redis-cli`, prosím zastavte migraci (obnovte služby pomocí `docker restart git-bridge sharelatex`) a obraťte se na podporu.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">$ docker exec redis redis-cli --scan --pattern 'DocVersion:*'
   # žádný výstup z redis-cli znamená úspěch, zkontrolujte nyní návratový kód redis-cli, měl by být nulový
   $ echo $?
   0
   </code></pre>
7. Zkuste vyprázdnit všechny čekající změny historie.

   Toto bude nutné provést jako nejlepší možný flush, protože některé projekty mají rozbitou historii kvůli chybné migraci databáze. Veškeré selhání bude řešeno opětovnou synchronizací historie na konci procesu obnovy.

   <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 %}

#### Vytvořit zálohu

Zvažte vytvoření [konzistentní zálohu](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) instance.
{% endstep %}

{% step %}

#### Upgradovat

Upgradujte na verzi `5.0.3`.
{% endstep %}

{% step %}

#### Automatická obnova

Proces obnovy se spustí automaticky při startu kontejneru.
{% endstep %}

{% step %}

#### Sledovat průběh

Průběh skriptu můžete sledovat pomocí průběžného čtení log souboru `/var/lib/overleaf/data/history/doc-version-recovery.log`. Na začátku vypíše celkový počet projektů a po každých 1000 zpracovaných projektech shrnutí.

{% code overflow="wrap" %}

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

{% endcode %}
{% endstep %}

{% step %}

#### Počkejte, až proces obnovy skončí

Počkejte, až proces obnovy skončí, buď sledováním výše uvedeného log souboru, dokud se neobjeví `Hotovo.` řádek, nebo čekáním na `Obnovení verzí dokumentů dokončeno.` aby se vytisklo na standardní výstup kontejneru Server Pro.
{% endstep %}

{% step %}

#### Ověřit proces obnovy

Ověřte proces obnovy otevřením panelu historie u několika projektů, kterým dříve historie chyběla.

1. U projektů určených k testu urychlete resynchronizaci (nakonec budou zpracovány, ale nechceme čekat, až na ně přijde řada.)

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

   (Zopakujte pro každý z ID projektů k otestování, `000000000000000000000000` nahrazujte vždy jen jedno ID projektu najednou.)
2. Otevřete editor projektu pro projekty `https://my-server-pro.example.com/project/000000000000000000000000`
3. Otevřete pro projekt panel „History“ a zobrazte nejnovější obsah.
4. Volitelné: Zavřete panel „History“ znovu. Proveďte změnu kódu, například přidáním komentáře do hlavičky.
5. Volitelné: Proveďte recompilaci, aby se vyvolalo vyprázdnění místní změny. Znovu otevřete panel „History“ a zobrazte změnu. Až budete hotovi, změnu vraťte zpět.
   {% endstep %}

{% step %}

#### Pro horizontální škálování...

Znovu spusťte ostatní workery.
{% endstep %}

{% step %}

#### Nechte instanci běžet

Prosím nechte instanci, která provedla proces obnovy, běžet. Na pozadí znovu synchronizuje historii všech projektů s paralelismem 1. To povede k mírně zvýšené základní zátěži. (Instanci můžete restartovat, ale bude muset resynchronizace začít znovu.)
{% endstep %}

{% step %}

#### Dejte nám vědět, až budete hotovi

Zákazníci Server Pro: Prosím informujte podpůrný tým, až proces obnovy dokončíte.
{% 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/on-premises-cs/podpora/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.
