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

# (Migrering fra v5.0.1) Gjenoppretting av dokumentversjon

{% hint style="info" %}
Hvis du aldri kjørte Server Pro versjon 5.0.1 eller Community Edition versjon 5.0.1, eller du startet en helt ny instans med 5.0.1, trenger du ikke å kjøre denne gjenopprettingsprosessen.
{% endhint %}

**Oppdateringer til denne siden:**

* (2024-04-22 13:40 BST): La til trinnet «Stopp nye oppdateringer fra å komme inn i systemet, og tøm alle endringer til MongoDB».
* (2024-04-23 11:45 BST): Ta høyde for ødelagte tømminger i 5.0.1 og hopp over tømminger når 5.0.2 ble startet.

Varigheten av gjenopprettingen vil avhenge av antall og størrelse på prosjektene i instansen din og lagringsbakenden som brukes av historikklageret for biter (som definert i `OVERLEAF_HISTORY_CHUNKS_BUCKET`).

Gjenopprettingsprosessen vil forsinke oppstarten av applikasjonen inne i Server Pro-containeren. Nettstedet vil fremstå som offline i løpet av den tiden. Vi støtter bare å kjøre gjenopprettingen fra én instans av Server Pro-containeren; alle andre arbeidere for horisontal skalering må være offline.

Du kan stoppe og gjenoppta gjenopprettingsprosessen om nødvendig.

Basert på våre ytelsestester kan gjenopprettingsprosessen behandle omtrent 10k små prosjekter per minutt på moderne maskinvare (3 GHz CPU-klokkehastighet og lokal NVMe-lagring). Som et eksempel, for en instans med 100k prosjekter, planlegg et vedlikeholdsvindu som gir minst 10+2 min nedetid. Bruk følgende spørring for å anslå antall prosjekter i instansen din:

{% code overflow="wrap" %}

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

{% endcode %}

Vennligst les de følgende gjenopprettingstrinnene i sin helhet før du begynner. Server Pro-kunder er mer enn velkomne til å ta kontakt med <support@overleaf.com> med eventuelle spørsmål.

### Gjenopprettingsprosess

{% stepper %}
{% step %}

#### Hent utgivelsesbilder

Hent `5.0.3` utgivelsesbildene.
{% endstep %}

{% step %}

#### Identifiser noen få prosjekter

Identifiser noen få prosjekter etter id som mangler historikk; ideelt sett har du tillatelse til å gjøre en endring i ett av dem.
{% endstep %}

{% step %}

#### Planlegg vedlikehold

Planlegg et vedlikeholdsvindu for nedetiden.
{% endstep %}

{% step %}

#### Stopp alle unntatt én arbeider

Stopp alle unntatt én arbeider når du bruker et oppsett for horisontal skalering.
{% endstep %}

{% step %}

#### Stopp nye oppdateringer og tøm alle endringer til MongoDB

Stopp nye oppdateringer fra å komme inn i systemet, og tøm alle endringer til MongoDB:

1. Lukk redigeringsverktøyet og koble alle brukere fra manuelt via admin-panelet på `https://my-server-pro.example.com/admin#open-close-editor` i fanen «Åpne/Lukk redigeringsverktøy».
2. Stopp WebSocket-/sanntidstjenesten.

   ```bash
   $ docker exec sharelatex sv stop real-time-overleaf
   ```
3. Vent til sanntidstjenesten avsluttes, slik det indikeres av `down:`.

   ```bash
   $ docker exec sharelatex sv status real-time-overleaf
   run: real-time-sharelatex: (pid 394) 50s, want down, got TERM
   # vent litt lenger...

   $ docker exec sharelatex sv status real-time-overleaf
   down: real-time-sharelatex: 7s, normally up
   ```
4. Stopp git-bridge-containeren hvis den er aktivert.

   ```bash
   $ docker stop git-bridge
   ```
5. Hvis du aldri kjørte 5.0.2: Utfør en manuell tømming for dokumentoppdateringer og vent til den er fullført med suksess.

   Du kan gjenta kommandoen ved feil. Hvis du ser en ikke-null `failureCount` i påfølgende kjøringer, vennligst stopp migreringen (gjenopprett tjenestene via `docker restart git-bridge sharelatex`) og ta kontakt med 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":"finished flushing all projects","time":"...","v":0}
   Ferdig med å tømme alle prosjekter
   </code></pre>
6. Hvis du aldri kjørte 5.0.2: Sørg for at alle endringer er tømt ut av redis.

   Hvis du får noe utdata fra `redis-cli`, vennligst stopp migreringen (gjenopprett tjenestene via `docker restart git-bridge sharelatex`) og ta kontakt med support.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">$ docker exec redis redis-cli --scan --pattern 'DocVersion:*'
   # ingen utdata fra redis-cli indikerer suksess, sjekk deretter exit-koden til redis-cli, den skal være null
   $ echo $?
   0
   </code></pre>
7. Prøv å tømme eventuelle ventende historikkendringer.

   Dette må være en best effort-tømming, siden noen prosjekter har ødelagt historikk på grunn av den dårlige database-migreringen. Eventuelle feil vil bli håndtert med en ny synk av historikken på slutten av gjenopprettingsprosessen.

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

#### Ta en sikkerhetskopi

Vurder å ta [konsistent sikkerhetskopi](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) av instansen.
{% endstep %}

{% step %}

#### Oppgrader

Oppgrader til versjon `5.0.3`.
{% endstep %}

{% step %}

#### Automatisk gjenoppretting

Gjenopprettingsprosessen kjøres automatisk ved oppstart av containeren.
{% endstep %}

{% step %}

#### Følg fremdriften

Du kan følge fremdriften til skriptet ved å følge loggfilen `/var/lib/overleaf/data/history/doc-version-recovery.log`. Den vil skrive ut totalt antall prosjekter i starten og en oppsummering etter hver 1000 prosjekter som er behandlet.

{% code overflow="wrap" %}

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

{% endcode %}
{% endstep %}

{% step %}

#### Vent til gjenopprettingsprosessen er ferdig

Vent til gjenopprettingsprosessen er ferdig ved enten å følge loggfilen ovenfor til en `Ferdig.` linje har blitt skrevet ut, eller ved å vente på `Gjenoppretting av doc-versjoner fullført.` å bli skrevet ut til standardutdata for Server Pro-containeren.
{% endstep %}

{% step %}

#### Valider gjenopprettingsprosessen

Valider gjenopprettingsprosessen ved å åpne historikkpanelet for noen av prosjektene som tidligere manglet historikk.

1. Fremskynd resynkroniseringen for prosjektene som skal testes (de vil bli behandlet etter hvert, men vi vil ikke vente på at det blir 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>

   (Gjenta med hver av prosjekt-id-ene som skal testes, erstatt `000000000000000000000000` med én prosjekt-id om gangen.)
2. Åpne prosjektredigereren for prosjektene `https://my-server-pro.example.com/project/000000000000000000000000`
3. Åpne «Historikk»-panelet for prosjektet og se det nyeste innholdet.
4. Valgfritt: Lukk «Historikk»-panelet igjen. Gjør en kodeendring, for eksempel ved å legge til en kommentar i toppteksten.
5. Valgfritt: Utfør en ny kompilering for å utløse en tømming av den lokale endringen. Åpne «Historikk»-panelet igjen og se endringen. Når du er ferdig, angre endringen.
   {% endstep %}

{% step %}

#### For horisontal skalering...

Start de andre arbeiderne igjen.
{% endstep %}

{% step %}

#### La instansen kjøre

Vennligst la instansen som utførte gjenopprettingsprosessen, fortsette å kjøre. Den vil resynkronisere historikken for alle prosjekter i bakgrunnen med en samtidighet på 1. Dette vil føre til noe høyere grunnbelastning. (Du kan starte instansen på nytt, men den må begynne på nytt med resynkroniseringene.)
{% endstep %}

{% step %}

#### Gi oss beskjed når du er ferdig

Server Pro-kunder: Vennligst gi supportteamet beskjed når du har fullført gjenopprettingsprosessen.
{% 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-no/stotte/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.
