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

# (v5.0.1-migrering) Gendannelse af dokumentversion

{% hint style="info" %}
Hvis du aldrig har kørt Server Pro-version 5.0.1 eller Community Edition-version 5.0.1, eller du startede en helt ny instans med 5.0.1, behøver du ikke at køre denne gendannelsesproces.
{% endhint %}

**Opdateringer til denne side:**

* (2024-04-22 13:40 BST): Tilføjede trin "Stop nye opdateringer fra at komme ind i systemet og skriv alle ændringer til MongoDB".
* (2024-04-23 11:45 BST): Tag højde for ødelagte flushes i 5.0.1, og spring flushes over, når 5.0.2 blev startet.

Varigheden af gendannelsen afhænger af antallet og størrelsen af projekter i din instans og den lagringsbackend, der bruges af historiklageret til chunks (som defineret i `OVERLEAF_HISTORY_CHUNKS_BUCKET`).

Gendannelsesprocessen forsinker opstarten af applikationen inde i Server Pro-containeren. Siden vil fremstå offline i den tid. Vi understøtter kun at køre gendannelsen fra én instans af Server Pro-containeren; alle andre vandret skalerings-workers skal være offline.

Du kan stoppe og genoptage gendannelsesprocessen, hvis det er nødvendigt.

Baseret på vores ydelsestests kan gendannelsesprocessen behandle cirka 10.000 små projekter i minuttet på moderne hardware (3 GHz CPU-klokkehastighed og lokal NVMe-lagring). Som eksempel bør du for en instans med 100.000 projekter planlægge et vedligeholdelsesvindue, der giver mindst 10+2 min. nedetid. Brug følgende forespørgsel til at estimere antallet af projekter i din instans:

{% code overflow="wrap" %}

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

{% endcode %}

Læs venligst de følgende gendannelsestrin fuldstændigt, før du starter. Server Pro-kunder er mere end velkomne til at kontakte <support@overleaf.com> med eventuelle spørgsmål.

### Gendannelsesproces

{% stepper %}
{% step %}

#### Hent release-images

Hent `5.0.3` release-images.
{% endstep %}

{% step %}

#### Identificer et par projekter

Identificer et par projekter efter id, som mangler historik; ideelt set har du tilladelse til at foretage en ændring i et af dem.
{% endstep %}

{% step %}

#### Planlæg vedligeholdelse

Planlæg et vedligeholdelsesvindue for nedetiden.
{% endstep %}

{% step %}

#### Stop alle undtagen én worker

Stop alle undtagen én worker, når du bruger en horisontal skaleringsopsætning.
{% endstep %}

{% step %}

#### Stop nye opdateringer og skriv alle ændringer til MongoDB

Stop nye opdateringer fra at komme ind i systemet og skriv alle ændringer til MongoDB:

1. Luk editoren og afbryd manuelt forbindelsen for alle brugere via adminpanelet på `https://my-server-pro.example.com/admin#open-close-editor` i fanen "Åbn/Luk editor".
2. Stop Websocket-/realtidsservicen.

   ```bash
   $ docker exec sharelatex sv stop real-time-overleaf
   ```
3. Vent på, at realtime-tjenesten afsluttes, som angivet af `nede:`.

   ```bash
   $ docker exec sharelatex sv status real-time-overleaf
   kørsel: real-time-sharelatex: (pid 394) 50s, forventet nede, fik TERM
   # vent lidt længere...

   $ docker exec sharelatex sv status real-time-overleaf
   nede: real-time-sharelatex: 7s, normalt oppe
   ```
4. Stop git-bridge-containeren, hvis den er aktiveret.

   ```bash
   $ docker stop git-bridge
   ```
5. Hvis du aldrig har kørt 5.0.2: Udfør en manuel flush for dokumentopdateringer, og vent på, at den afsluttes med succes.

   Du kan gentage kommandoen ved fejl. Hvis du ser en ikke-nul `failureCount` i successive kørsler, skal du stoppe migreringen (gendan tjenesterne via `docker restart git-bridge sharelatex`) og kontakt support.

   <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":"afsluttede flush af alle projekter","time":"...","v":0}
   Flush af alle projekter er færdig
   </code></pre>
6. Hvis du aldrig har kørt 5.0.2: Sørg for, at alle ændringer er blevet skyllet ud af redis.

   Hvis du får nogen output fra `redis-cli`, skal du stoppe migreringen (gendan tjenesterne via `docker restart git-bridge sharelatex`) og kontakt support.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">$ docker exec redis redis-cli --scan --pattern 'DocVersion:*'
   # ingen output fra redis-cli indikerer succes, tjek derefter exit-koden for redis-cli, den skal være nul
   $ echo $?
   0
   </code></pre>
7. Prøv at skylle eventuelle ventende historikændringer.

   Dette skal være en flush efter bedste evne, da nogle projekter har ødelagte historikker på grund af den dårlige database-migrering. Eventuelle fejl vil blive håndteret ved en gensynkronisering af historikken til sidst i gendannelsesprocessen.

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

#### Tag en sikkerhedskopi

Overvej at tage en [konsistent backup](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) af instansen.
{% endstep %}

{% step %}

#### Opgrader

Opgrader til version `5.0.3`.
{% endstep %}

{% step %}

#### Automatisk gendannelse

Gendannelsesprocessen kører automatisk ved containerstart.
{% endstep %}

{% step %}

#### Følg med i forløbet

Du kan følge scriptets forløb ved at overvåge logfilen `/var/lib/overleaf/data/history/doc-version-recovery.log`. Den vil udskrive det samlede antal projekter i begyndelsen og et resumé efter hver 1000 behandlede projekter.

{% code overflow="wrap" %}

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

{% endcode %}
{% endstep %}

{% step %}

#### Vent på, at gendannelsesprocessen afsluttes

Vent på, at gendannelsesprocessen afsluttes ved enten at følge logfilen ovenfor, indtil en `Færdig.` linje er blevet udskrevet, eller ved at vente på `Gendannelse af doc-versioner afsluttet.` at blive udskrevet til standardoutputtet i Server Pro-containeren.
{% endstep %}

{% step %}

#### Valider gendannelsesprocessen

Valider gendannelsesprocessen ved at åbne historikpanelet for et par af projekterne med historik, der tidligere manglede.

1. Fremskynd gensynkroniseringen for de projekter, der skal testes (De vil blive behandlet på et tidspunkt, men vi vil ikke vente på, at det bliver deres tur.)

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

   (Gentag med hver af projekt-id'erne til test, erstat `000000000000000000000000` med ét projekt-id ad gangen.)
2. Åbn projekteditoren for projekterne `https://my-server-pro.example.com/project/000000000000000000000000`
3. Åbn panelet "Historik" for projektet og se det seneste indhold.
4. Valgfrit: Luk panelet "Historik" igen. Foretag en kodeændring, såsom at tilføje en kommentar til headeren.
5. Valgfrit: Udfør en genkompilering for at udløse en flush af den lokale ændring. Åbn panelet "Historik" igen og se ændringen. Når du er færdig, fortryd ændringen.
   {% endstep %}

{% step %}

#### For horisontal skalering...

Start de andre workers igen.
{% endstep %}

{% step %}

#### Hold instansen kørende

Behold venligst den instans kørende, som udførte gendannelsesprocessen. Den vil gensynkronisere historikken for alle projekter i baggrunden med en parallelitet på 1. Dette vil resultere i en lidt forhøjet basisbelastning. (Du kan genstarte instansen, men den skal så starte forfra med gensynkroniseringerne.)
{% endstep %}

{% step %}

#### Lad os vide, når du er færdig

Server Pro-kunder: Giv venligst supportteamet besked, når du har afsluttet gendannelsesprocessen.
{% 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/da/support/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.
