> 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/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 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 degli svuotamenti non riusciti in 5.0.1 e saltare gli svuotamenti quando è stata avviata 5.0.2.

La durata del ripristino dipenderà dal numero e dalla dimensione dei progetti nella tua istanza e dal backend di archiviazione usato dallo store della cronologia 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 di prestazioni, il processo di ripristino può elaborare circa 10k piccoli progetti al minuto su hardware moderno (velocità di clock della CPU di 3 GHz e archiviazione locale NVMe). Ad esempio, per un'istanza con 100k progetti, pianifica una finestra di manutenzione che consenta almeno 10+2 min di downtime. 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 per ID che non hanno la cronologia; 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 tranne un worker

Ferma tutti tranne un worker quando usi una configurazione di scaling orizzontale.
{% endstep %}

{% step %}

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

Interrompi l'ingresso di nuovi aggiornamenti 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. Interrompi 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
   # aspetta ancora un po'...

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

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

   Puoi ripetere il comando in caso di errore. Se vedi un `failureCount` diverso da zero 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":"svuotamento di tutti i progetti completato","time":"...","v":0}
   Svuotamento di tutti i progetti completato
   </code></pre>
6. Se non hai mai eseguito 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 il codice di uscita di redis-cli a seguire: dovrebbe essere zero
   $ echo $?
   0
   </code></pre>
7. Prova a svuotare eventuali modifiche alla cronologia in sospeso.

   Questo dovrà essere uno svuotamento eseguito al meglio, poiché alcuni progetti hanno cronologie danneggiate a causa della cattiva migrazione del database. Eventuali errori verranno 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

Valuta di fare un [backup consistente](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) 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 controllando in tempo reale 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 finisca

Attendi che il processo di ripristino finisca controllando il file di log sopra fino a quando un `Fatto.` riga è stata stampata o attendendo che `Ripristino delle versioni dei documenti completato.` venga stampato nell'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 con cronologia precedentemente mancante.

1. Accelera la risincronizzazione per i progetti da testare (verranno comunque elaborati, 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 progetto da testare, sostituisci `000000000000000000000000` con un ID 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" per il 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 ricompilazione per attivare uno svuotamento della modifica locale. Apri di nuovo il pannello "Cronologia" e visualizza la modifica. Al termine, annulla la modifica.
   {% endstep %}

{% step %}

#### Per lo scaling orizzontale...

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

{% step %}

#### Mantieni attiva l'istanza

Ti preghiamo di mantenere attiva l'istanza che ha eseguito il processo di ripristino. Eseguirà nuovamente la risincronizzazione della cronologia per tutti i progetti in background con una concorrenza pari a 1. Ciò comporterà un carico di base leggermente più elevato. (Puoi riavviare l'istanza, ma dovrà ricominciare da capo con le risincronizzazioni.)
{% endstep %}

{% step %}

#### Facci sapere quando hai 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://ayakaleaf-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.
