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

# (v5.0.1-migrering) Gendannelse af dokumentsversion

{% hint style="info" %}
Hvis du aldrig kørte 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 tøm alle ændringer til MongoDB".
* (2024-04-23 11:45 BST): Håndterer ødelagte flushes i 5.0.1 og springer 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 lager-backend, der bruges af history store til chunks (som defineret i `OVERLEAF_HISTORY_CHUNKS_BUCKET`).

Gendannelsesprocessen vil forsinke applikationsstarten inde i Server Pro-containeren. Sitet vil fremstå offline i den periode. Vi understøtter kun at køre gendannelsen fra en enkelt instans af Server Pro-containeren; alle andre horisontale 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 pr. minut på moderne hardware (3 GHz CPU-klokkehastighed og lokal NVMe-lagring). Som eksempel: For en instans med 100.000 projekter bør du 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 i deres helhed, før du starter. Server Pro-kunder er meget 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 %}

#### Identificér nogle få projekter

Identificér et par projekter via id, der 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 tøm alle ændringer til MongoDB

Stop nye opdateringer fra at komme ind i systemet, og tøm alle ændringer til MongoDB:

1. Luk editoren og afbryd alle brugere manuelt 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-servicen afsluttes, som angivet af `nede:`.

   ```bash
   $ docker exec sharelatex sv status real-time-overleaf
   run: real-time-sharelatex: (pid 394) 50s, skulle være 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 kørte 5.0.2: Udfør en manuel flush af 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 kontakte 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":"færdig med at tømme alle projekter","time":"...","v":0}
   Færdig med at tømme alle projekter
   </code></pre>
6. Hvis du aldrig kørte 5.0.2: Sørg for, at alle ændringer er blevet tømt 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 kontakte support.

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

   Dette skal være en best-effort-flush, da nogle projekter har ødelagte historikker på grund af den dårlige database-migrering. Eventuelle fejl vil blive håndteret med 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 sikkerhedskopi](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 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 starten og en opsummering 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 overvåge ovenstående logfil, indtil en `Færdig.` linje er blevet udskrevet, eller ved at vente på `Gendannelse af dokumentversioner afsluttet.` bliver udskrevet til standardoutputtet for Server Pro-containeren.
{% endstep %}

{% step %}

#### Valider gendannelsesprocessen

Valider gendannelsesprocessen ved at åbne historikpanelet for et par af de projekter, som tidligere manglede historik.

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, der skal testes, erstat `000000000000000000000000` med ét projekt-id ad gangen.)
2. Åbn projekteditoren for projekterne `https://my-server-pro.example.com/project/000000000000000000000000`
3. Åbn projektets "Historik"-panel, og se det nyeste indhold.
4. Valgfrit: Luk "Historik"-panelet 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 "Historik"-panelet igen, og se ændringen. Når du er færdig, skal du fortryde æ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 samtidighed på 1. Dette vil medføre en let forhøjet grundbelastning. (Du kan genstarte instansen, men så skal den 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 fuldført 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://ayakaleaf-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.
