> 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/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 pronikání nových aktualizací do systému a vyprázdnit všechny změny do MongoDB“.
* (2024-04-23 11:45 BST): Zohledněte nefunkční flush v 5.0.1 a při spuštění 5.0.2 přeskočte flush.

Doba trvání obnovy bude záviset na počtu a velikosti projektů ve vaší instanci a na úložišti používané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. Web bude po tuto dobu nedostupný. Podporujeme pouze spuštění obnovy z jediné instance kontejneru Server Pro; všichni ostatní pracovníci horizontálního škálování musí být offline.

V případě potřeby můžete proces obnovy zastavit a později pokračovat.

Na základě našich výkonových testů může proces obnovy na moderním hardwaru (taktovací frekvence CPU 3 GHz a lokální úložiště NVMe) zpracovat přibližně 10 tisíc malých projektů za minutu. Například pro instanci se 100 tisíci projekty naplánujte údržbové okno, které umožní alespoň 10+2 min odstávky. 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 přečtěte níže uvedené kroky obnovy celé. Zákazníci Server Pro nás mohou kdykoli kontaktovat na <support@overleaf.com> s jakýmikoli dotazy.

### Proces obnovy

{% stepper %}
{% step %}

#### Stáhněte image vydání

Stáhněte `5.0.3` image vydání.
{% endstep %}

{% step %}

#### Identifikujte několik projektů

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

{% step %}

#### Naplánujte údržbu

Naplánujte údržbové okno pro odstávku.
{% endstep %}

{% step %}

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

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

{% step %}

#### Zastavte nové aktualizace a vyprázdněte všechny změny do MongoDB

Zastavte pronikání nových aktualizací do systému a vyprázdněte všechny změny do MongoDB:

1. Ručně zavřete editor a odpojte všechny uživatele přes administrační panel na `https://my-server-pro.example.com/admin#open-close-editor` na kartě „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 podle `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 5.0.2: Proveďte ruční flush aktualizací dokumentů a počkejte, až skončí úspěšně.

   Při chybě můžete příkaz zopakovat. Pokud při opakovaných spuštěních uvidíte nenulovou hodnotu `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":"finished flushing all projects","time":"...","v":0}
   Dokončeno vyprázdnění všech projektů
   </code></pre>
6. Pokud jste nikdy nespustili 5.0.2: Ujistěte se, že všechny změny byly vyprázdněny z redisu.

   Pokud z `redis-cli`obdržíte jakýkoli výstup, 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 poté 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.

   Bude nutné provést flush nejlepším možným způsobem, protože některé projekty mají kvůli chybné databázové migraci poškozenou historii. Jakékoli neúspěchy budou na konci procesu obnovy řešeny opětovnou synchronizací historie.

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

#### Upgradujte

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

{% step %}

#### Automatická obnova

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

{% step %}

#### Sledujte průběh

Průběh skriptu můžete sledovat pomocí sledování 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 souhrn.

{% 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 nebude vytištěn `Hotovo.` řádek, nebo čekáním, až bude `Obnova verzí dokumentů dokončena.` vytištěno na standardní výstup kontejneru Server Pro.
{% endstep %}

{% step %}

#### Ověřte proces obnovy

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

1. U testovaných projektů urychlete resynchronizaci (Nakonec se zpracují, 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>

   (Opakujte pro každý z testovaných ID projektů, nahrazujte `000000000000000000000000` vždy jen jedním ID projektu.)
2. Otevřete editor projektu pro projekty `https://my-server-pro.example.com/project/000000000000000000000000`
3. Otevřete u projektu panel „History“ a zobrazte nejnovější obsah.
4. Volitelné: Znovu zavřete panel „History“. Proveďte změnu kódu, například přidejte komentář do hlavičky.
5. Volitelné: Spusťte re-kompilaci, aby se vyvolal flush lokální změny. Znovu otevřete panel „History“ a změnu uvidíte. Až skončíte, změnu vraťte.
   {% endstep %}

{% step %}

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

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

{% step %}

#### Nechte instanci běžet

Prosím nechte běžet instanci, ve které se spustil proces obnovy. V pozadí bude znovu synchronizovat historii všech projektů s paralelismem 1. To povede k mírně zvýšené základní zátěži. (Instanci můžete restartovat, ale při resynchronizacích bude muset začít od začátku.)
{% endstep %}

{% step %}

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

Zákazníci Server Pro: Prosím dejte týmu podpory vědět, až dokončíte proces obnovy.
{% 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/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.
