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

# (Μετάβαση v5.0.1) Ανάκτηση έκδοσης εγγράφου

{% hint style="info" %}
Αν δεν έχετε ποτέ εκτελέσει την έκδοση 5.0.1 του Server Pro ή την έκδοση 5.0.1 της Community Edition, ή αν ξεκινήσατε μια εντελώς καινούρια εγκατάσταση με την 5.0.1, δεν χρειάζεται να εκτελέσετε αυτή τη διαδικασία αποκατάστασης.
{% endhint %}

**Ενημερώσεις σε αυτήν τη σελίδα:**

* (2024-04-22 13:40 BST): Προστέθηκε το βήμα "Σταματήστε να μπαίνουν νέες ενημερώσεις στο σύστημα και εκκαθαρίστε όλες τις αλλαγές στο MongoDB".
* (2024-04-23 11:45 BST): Λάβετε υπόψη τις χαλασμένες εκκαθαρίσεις στην 5.0.1 και παραλείψτε τις εκκαθαρίσεις όταν είχε ξεκινήσει η 5.0.2.

Η διάρκεια της αποκατάστασης θα εξαρτηθεί από τον αριθμό και το μέγεθος των έργων στην εγκατάστασή σας και από το storage backend που χρησιμοποιείται από το history store για τα chunks (όπως ορίζεται στο `OVERLEAF_HISTORY_CHUNKS_BUCKET`).

Η διαδικασία αποκατάστασης θα καθυστερήσει την εκκίνηση της εφαρμογής μέσα στο container του Server Pro. Ο ιστότοπος θα εμφανίζεται εκτός σύνδεσης κατά τη διάρκεια εκείνης της περιόδου. Υποστηρίζουμε την εκτέλεση της αποκατάστασης μόνο από ένα και μοναδικό instance του container του Server Pro· όλοι οι άλλοι workers οριζόντιας κλιμάκωσης πρέπει να είναι εκτός σύνδεσης.

Μπορείτε να σταματήσετε και να συνεχίσετε τη διαδικασία αποκατάστασης αν χρειαστεί.

Με βάση τις δοκιμές απόδοσης μας, η διαδικασία αποκατάστασης μπορεί να επεξεργαστεί περίπου 10k μικρά έργα ανά λεπτό σε σύγχρονο υλικό (3GHz ταχύτητα ρολογιού CPU και τοπικό NVMe storage). Για παράδειγμα, για ένα instance με 100k έργα, προγραμματίστε ένα παράθυρο συντήρησης που να επιτρέπει τουλάχιστον 10+2 λεπτά διακοπής λειτουργίας. Χρησιμοποιήστε το ακόλουθο ερώτημα για να εκτιμήσετε τον αριθμό των έργων στην εγκατάστασή σας:

{% code overflow="wrap" %}

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

{% endcode %}

Παρακαλούμε διαβάστε πλήρως τα ακόλουθα βήματα αποκατάστασης πριν ξεκινήσετε. Οι πελάτες του Server Pro είναι περισσότερο από ευπρόσδεκτοι να επικοινωνήσουν με <support@overleaf.com> για οποιεσδήποτε ερωτήσεις.

### Διαδικασία αποκατάστασης

{% stepper %}
{% step %}

#### Λήψη εικόνων έκδοσης

Λάβετε τις `5.0.3` εικόνες έκδοσης.
{% endstep %}

{% step %}

#### Εντοπίστε μερικά έργα

Εντοπίστε μερικά έργα με id που λείπει το ιστορικό· ιδανικά έχετε άδεια να κάνετε μια αλλαγή σε ένα από αυτά.
{% endstep %}

{% step %}

#### Προγραμματίστε συντήρηση

Προγραμματίστε ένα παράθυρο συντήρησης για τη διακοπή λειτουργίας.
{% endstep %}

{% step %}

#### Σταματήστε όλους εκτός από έναν worker

Σταματήστε όλους εκτός από έναν worker όταν χρησιμοποιείτε ρύθμιση οριζόντιας κλιμάκωσης.
{% endstep %}

{% step %}

#### Σταματήστε τις νέες ενημερώσεις και εκκαθαρίστε όλες τις αλλαγές στο MongoDB

Σταματήστε να μπαίνουν νέες ενημερώσεις στο σύστημα και εκκαθαρίστε όλες τις αλλαγές στο MongoDB:

1. Κλείστε τον editor και αποσυνδέστε όλους τους χρήστες χειροκίνητα μέσω του πίνακα διαχείρισης στο `https://my-server-pro.example.com/admin#open-close-editor` στην καρτέλα "Open/Close Editor".
2. Σταματήστε την υπηρεσία Websocket/real-time.

   ```bash
   $ docker exec sharelatex sv stop real-time-overleaf
   ```
3. Περιμένετε να τερματιστεί η υπηρεσία real-time, όπως υποδεικνύεται από `down:`.

   ```bash
   $ docker exec sharelatex sv status real-time-overleaf
   run: real-time-sharelatex: (pid 394) 50s, want down, got TERM
   # περιμένετε λίγο ακόμα...

   $ docker exec sharelatex sv status real-time-overleaf
   down: real-time-sharelatex: 7s, normally up
   ```
4. Σταματήστε το container git-bridge αν είναι ενεργοποιημένο.

   ```bash
   $ docker stop git-bridge
   ```
5. Αν δεν έχετε ποτέ εκτελέσει την 5.0.2: Εκτελέστε χειροκίνητη εκκαθάριση για τις ενημερώσεις εγγράφων και περιμένετε να ολοκληρωθεί με επιτυχία.

   Μπορείτε να επαναλάβετε την εντολή σε περίπτωση σφάλματος. Σε περίπτωση που δείτε ένα μη μηδενικό `failureCount` σε διαδοχικές εκτελέσεις, παρακαλούμε σταματήστε τη μετανάστευση (επαναφέρετε τις υπηρεσίες μέσω `docker restart git-bridge sharelatex`) και επικοινωνήστε με την υποστήριξη.

   <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":"ολοκληρώθηκε η εκκαθάριση όλων των έργων","time":"...","v":0}
   Ολοκληρώθηκε η εκκαθάριση όλων των έργων
   </code></pre>
6. Αν δεν έχετε ποτέ εκτελέσει την 5.0.2: Βεβαιωθείτε ότι όλες οι αλλαγές έχουν εκκαθαριστεί από το redis.

   Αν λάβετε οποιαδήποτε έξοδο από το `redis-cli`, παρακαλούμε σταματήστε τη μετανάστευση (επαναφέρετε τις υπηρεσίες μέσω `docker restart git-bridge sharelatex`) και επικοινωνήστε με την υποστήριξη.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">$ docker exec redis redis-cli --scan --pattern 'DocVersion:*'
   # καμία έξοδος από το redis-cli υποδηλώνει επιτυχία, ελέγξτε στη συνέχεια τον κωδικό εξόδου του redis-cli, θα πρέπει να είναι μηδέν
   $ echo $?
   0
   </code></pre>
7. Προσπαθήστε να εκκαθαρίσετε τυχόν εκκρεμείς αλλαγές ιστορικού.

   Αυτό θα χρειαστεί να είναι μια εκκαθάριση με την καλύτερη δυνατή προσπάθεια, καθώς ορισμένα έργα έχουν χαλασμένα ιστορικά λόγω της κακής μετανάστευσης της βάσης δεδομένων. Οποιαδήποτε αποτυχία θα αντιμετωπιστεί με επανασυγχρονισμό του ιστορικού στο τέλος της διαδικασίας αποκατάστασης.

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

#### Δημιουργήστε αντίγραφο ασφαλείας

Σκεφτείτε να κάνετε ένα [συνεπές αντίγραφο ασφαλείας](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) του instance.
{% endstep %}

{% step %}

#### Αναβάθμιση

Αναβαθμίστε στην έκδοση `5.0.3`.
{% endstep %}

{% step %}

#### Αυτόματη αποκατάσταση

Η διαδικασία αποκατάστασης εκτελείται αυτόματα κατά την εκκίνηση του container.
{% endstep %}

{% step %}

#### Παρακολούθηση προόδου

Μπορείτε να παρακολουθήσετε την πρόοδο του script παρακολουθώντας το αρχείο καταγραφής `/var/lib/overleaf/data/history/doc-version-recovery.log`. Θα εκτυπώσει τον συνολικό αριθμό των έργων στην αρχή και μια σύνοψη μετά από κάθε 1000 έργα που επεξεργάζονται.

{% code overflow="wrap" %}

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

{% endcode %}
{% endstep %}

{% step %}

#### Περιμένετε να ολοκληρωθεί η διαδικασία αποκατάστασης

Περιμένετε να ολοκληρωθεί η διαδικασία αποκατάστασης είτε παρακολουθώντας το παραπάνω αρχείο καταγραφής μέχρι να `Ολοκληρώθηκε.` έχει εκτυπωθεί μια γραμμή είτε περιμένοντας να `Ολοκληρώθηκε η αποκατάσταση των εκδόσεων εγγράφων.` να εκτυπωθεί στην τυπική έξοδο του container του Server Pro.
{% endstep %}

{% step %}

#### Επαληθεύστε τη διαδικασία αποκατάστασης

Επαληθεύστε τη διαδικασία αποκατάστασης ανοίγοντας το παράθυρο ιστορικού για μερικά από τα έργα που προηγουμένως δεν είχαν ιστορικό.

1. Επιταχύνετε τον επανασυγχρονισμό για τα έργα προς δοκιμή (Θα επεξεργαστούν τελικά, αλλά δεν θέλουμε να περιμένουμε να έρθει η σειρά τους.)

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

   (Επαναλάβετε με κάθε ένα από τα project-ids για δοκιμή, αντικαταστήστε `000000000000000000000000` με ένα project-id κάθε φορά.)
2. Ανοίξτε τον editor του έργου για τα έργα `https://my-server-pro.example.com/project/000000000000000000000000`
3. Ανοίξτε το παράθυρο "History" για το έργο και δείτε το πιο πρόσφατο περιεχόμενο.
4. Προαιρετικά: Κλείστε ξανά το παράθυρο "History". Κάντε μια αλλαγή στον κώδικα, όπως την προσθήκη ενός σχολίου στην κεφαλίδα.
5. Προαιρετικά: Εκτελέστε ξανά μεταγλώττιση για να ενεργοποιήσετε μια εκκαθάριση της τοπικής αλλαγής. Ανοίξτε ξανά το παράθυρο "History" και δείτε την αλλαγή. Όταν τελειώσετε, αναιρέστε την αλλαγή.
   {% endstep %}

{% step %}

#### Για οριζόντια κλιμάκωση...

Ξεκινήστε ξανά τους άλλους workers.
{% endstep %}

{% step %}

#### Κρατήστε το instance σε λειτουργία

Παρακαλούμε κρατήστε σε λειτουργία το instance που εκτέλεσε τη διαδικασία αποκατάστασης. Θα επανασυγχρονίσει το ιστορικό για όλα τα έργα στο παρασκήνιο με ταυτόχρονη εκτέλεση 1. Αυτό θα έχει ως αποτέλεσμα ελαφρώς αυξημένο βασικό φορτίο. (Μπορείτε να επανεκκινήσετε το instance, αλλά θα χρειαστεί να ξεκινήσει από την αρχή με τους επανασυγχρονισμούς.)
{% endstep %}

{% step %}

#### Ενημερώστε μας όταν τελειώσετε

Πελάτες Server Pro: Παρακαλούμε ενημερώστε την ομάδα υποστήριξης όταν έχετε ολοκληρώσει τη διαδικασία αποκατάστασης.
{% 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/el/ypostiriksi/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.
