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

# (Migrazione v5.0.1) Ripristino della versione del documento

{% hint style="info" %}
Se non hai mai eseguito Server Pro versione 5.0.1 o Community Edition versione 5.0.1, oppure hai avviato una nuova istanza con la 5.0.1, non è necessario eseguire questo processo di ripristino.
{% endhint %}

**Aggiornamenti a questa pagina:**

* (2024-04-22 13:40 BST): Aggiunto il passaggio "Impedire ai nuovi aggiornamenti di entrare nel sistema e svuotare tutte le modifiche in MongoDB".
* (2024-04-23 11:45 BST): Tenere conto dei flush non riusciti in 5.0.1 e saltare i flush quando è stata avviata la 5.0.2.

La durata del ripristino dipenderà dal numero e dalle dimensioni dei progetti nella tua istanza e dal backend di archiviazione utilizzato dallo storico per i chunk (come definito in `OVERLEAF_HISTORY_CHUNKS_BUCKET`).

Il processo di ripristino ritarderà l'avvio dell'applicazione all'interno del container Server Pro. Il sito apparirà offline durante quel periodo. Supportiamo l'esecuzione del ripristino solo da una singola istanza del container Server Pro; tutti gli altri worker di scaling orizzontale devono essere offline.

Se necessario, puoi interrompere e riprendere il processo di ripristino.

In base ai nostri test prestazionali, il processo di ripristino può elaborare circa 10k piccoli progetti al minuto su hardware moderno (CPU a 3 GHz e storage NVMe locale). Ad esempio, per un'istanza con 100k progetti, pianifica una finestra di manutenzione che consenta almeno 10+2 min di indisponibilità. Usa la seguente query per stimare il numero di progetti nella tua istanza:

{% code overflow="wrap" %}

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

{% endcode %}

Leggi per intero i seguenti passaggi di ripristino prima di iniziare. I clienti Server Pro sono più che benvenuti a contattare <support@overleaf.com> per qualsiasi domanda.

### Processo di ripristino

{% stepper %}
{% step %}

#### Scarica le immagini di release

Scarica le `5.0.3` immagini di release.
{% endstep %}

{% step %}

#### Identifica alcuni progetti

Identifica alcuni progetti tramite id che hanno la cronologia mancante; idealmente hai l'autorizzazione per apportare una modifica a uno di essi.
{% endstep %}

{% step %}

#### Pianifica la manutenzione

Pianifica una finestra di manutenzione per il downtime.
{% endstep %}

{% step %}

#### Ferma tutti i worker tranne uno

Ferma tutti i worker tranne uno quando utilizzi una configurazione di scaling orizzontale.
{% endstep %}

{% step %}

#### Impedisci i nuovi aggiornamenti e svuota tutte le modifiche in MongoDB

Impedisci ai nuovi aggiornamenti di entrare nel sistema e svuota tutte le modifiche in MongoDB:

1. Chiudi l'editor e disconnetti manualmente tutti gli utenti tramite il pannello di amministrazione su `https://my-server-pro.example.com/admin#open-close-editor` nella scheda "Apri/Chiudi editor".
2. Arresta il servizio WebSocket/in tempo reale.

   ```bash
   $ docker exec sharelatex sv stop real-time-overleaf
   ```
3. Attendi che il servizio in tempo reale termini, come indicato da `down:`.

   ```bash
   $ docker exec sharelatex sv status real-time-overleaf
   run: real-time-sharelatex: (pid 394) 50s, want down, got TERM
   # attendi ancora un po'...

   $ docker exec sharelatex sv status real-time-overleaf
   down: real-time-sharelatex: 7s, normalmente attivo
   ```
4. Arresta il container git-bridge, se abilitato.

   ```bash
   $ docker stop git-bridge
   ```
5. Se non hai mai eseguito la 5.0.2: esegui manualmente un flush per gli aggiornamenti dei documenti e attendi che termini con successo.

   Puoi ripetere il comando in caso di errore. Nel caso tu veda un `failureCount` non nullo in esecuzioni successive, interrompi la migrazione (ripristina i servizi tramite `docker restart git-bridge sharelatex`) e contatta il supporto.

   <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}
   Completato il flush di tutti i progetti
   </code></pre>
6. Se non hai mai eseguito la 5.0.2: assicurati che tutte le modifiche siano state svuotate da redis.

   Se ottieni qualsiasi output da `redis-cli`, interrompi la migrazione (ripristina i servizi tramite `docker restart git-bridge sharelatex`) e contatta il supporto.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">$ docker exec redis redis-cli --scan --pattern 'DocVersion:*'
   # nessun output da redis-cli indica successo; controlla subito dopo il codice di uscita di redis-cli, dovrebbe essere zero
   $ echo $?
   0
   </code></pre>
7. Prova a svuotare eventuali modifiche alla cronologia in sospeso.

   Questo dovrà essere un flush il più possibile efficace, poiché alcuni progetti hanno cronologie danneggiate a causa della cattiva migrazione del database. Eventuali errori saranno risolti con una risincronizzazione della cronologia alla fine del processo di ripristino.

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

#### Fai un backup

Prendi in considerazione l'idea di fare un [backup coerente](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) dell'istanza.
{% endstep %}

{% step %}

#### Aggiorna

Aggiorna alla versione `5.0.3`.
{% endstep %}

{% step %}

#### Ripristino automatico

Il processo di ripristino viene eseguito automaticamente all'avvio del container.
{% endstep %}

{% step %}

#### Segui l'avanzamento

Puoi seguire l'avanzamento dello script monitorando il file di log `/var/lib/overleaf/data/history/doc-version-recovery.log`. Stamperà il numero totale di progetti all'inizio e un riepilogo dopo ogni 1000 progetti elaborati.

{% code overflow="wrap" %}

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

{% endcode %}
{% endstep %}

{% step %}

#### Attendi che il processo di ripristino termini

Attendi che il processo di ripristino termini seguendo il file di log sopra fino a quando non `Fatto.` sarà stata stampata una riga oppure attendendo `Ripristino delle versioni dei documenti completato.` venga stampato sull'output standard del container Server Pro.
{% endstep %}

{% step %}

#### Convalida il processo di ripristino

Convalida il processo di ripristino aprendo il pannello della cronologia per alcuni dei progetti che in precedenza avevano la cronologia mancante.

1. Accelera la risincronizzazione per i progetti da testare (verranno comunque elaborati prima o poi, ma non vogliamo aspettare il loro turno.)

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

   (Ripeti con ciascuno degli id dei progetti da testare, sostituendo `000000000000000000000000` con un id di progetto alla volta.)
2. Apri l'editor del progetto per i progetti `https://my-server-pro.example.com/project/000000000000000000000000`
3. Apri il pannello "Cronologia" del progetto e visualizza il contenuto più recente.
4. Opzionale: chiudi di nuovo il pannello "Cronologia". Apporta una modifica al codice, ad esempio aggiungendo un commento all'intestazione.
5. Opzionale: esegui una nuova compilazione per attivare il flush della modifica locale. Apri di nuovo il pannello "Cronologia" e visualizza la modifica. Al termine, annulla la modifica.
   {% endstep %}

{% step %}

#### Per lo scaling orizzontale...

Riavvia di nuovo gli altri worker.
{% endstep %}

{% step %}

#### Lascia in esecuzione l'istanza

Ti chiediamo di lasciare in esecuzione l'istanza che ha eseguito il processo di ripristino. Risincronizzerà la cronologia di tutti i progetti in background con una concorrenza di 1. Ciò comporterà un carico di base leggermente più elevato. (Puoi riavviare l'istanza, ma dovrà ricominciare da capo con le risincronizzazioni.)
{% endstep %}

{% step %}

#### Fateci sapere quando avete finito

Clienti Server Pro: fate sapere al team di supporto quando avete completato il processo di ripristino.
{% 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/it/supporto/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.
