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

# (Міграція v5.0.1) Відновлення версії документа

{% hint style="info" %}
Якщо ви ніколи не запускали Server Pro версії 5.0.1 або Community Edition версії 5.0.1, або якщо ви запустили абсолютно новий екземпляр із 5.0.1, вам не потрібно виконувати цей процес відновлення.
{% endhint %}

**Оновлення цієї сторінки:**

* (2024-04-22 13:40 BST): Додано крок "Зупиніть потрапляння нових оновлень у систему та скиньте всі зміни до MongoDB".
* (2024-04-23 11:45 BST): Враховано зламані скидання у 5.0.1 та пропущено скидання, коли було запущено 5.0.2.

Тривалість відновлення залежатиме від кількості та розміру проєктів у вашому екземплярі та від бекенда сховища, який використовується сховищем історії для фрагментів (як визначено в `OVERLEAF_HISTORY_CHUNKS_BUCKET`).

Процес відновлення затримає запуск застосунку всередині контейнера Server Pro. Протягом цього часу сайт буде недоступний. Ми підтримуємо запуск відновлення лише з одного екземпляра контейнера Server Pro; усі інші воркери горизонтального масштабування мають бути вимкнені.

За потреби ви можете зупинити та відновити процес відновлення.

На основі наших тестів продуктивності процес відновлення може обробляти приблизно 10 тис. невеликих проєктів за хвилину на сучасному обладнанні (тактова частота CPU 3 ГГц і локальне сховище NVMe). Наприклад, для екземпляра з 100 тис. проєктів заплануйте вікно технічного обслуговування, яке дозволяє щонайменше 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 %}

#### Визначте кілька проєктів

Визначте кілька проєктів за ідентифікатором, у яких відсутня історія; бажано, щоб ви мали дозвіл внести зміну в один із них.
{% endstep %}

{% step %}

#### Заплануйте технічне обслуговування

Заплануйте вікно технічного обслуговування на час простою.
{% endstep %}

{% step %}

#### Зупиніть усі, крім одного, воркери

Зупиніть усі воркери, крім одного, якщо використовується схема горизонтального масштабування.
{% endstep %}

{% step %}

#### Зупиніть нові оновлення та скиньте всі зміни до MongoDB

Зупиніть потрапляння нових оновлень у систему та скиньте всі зміни до MongoDB:

1. Закрийте редактор і вручну від’єднайте всіх користувачів через панель адміністратора на `https://my-server-pro.example.com/admin#open-close-editor` у вкладці «Відкрити/Закрити редактор».
2. Зупиніть службу Websocket/реального часу.

   ```bash
   $ docker exec sharelatex sv stop real-time-overleaf
   ```
3. Дочекайтеся, доки служба реального часу завершить роботу, про що свідчить `не працює:`.

   ```bash
   $ docker exec sharelatex sv status real-time-overleaf
   запущено: real-time-sharelatex: (pid 394) 50с, очікується зупинення, отримано TERM
   # зачекайте ще трохи...

   $ docker exec sharelatex sv status real-time-overleaf
   не працює: real-time-sharelatex: 7с, зазвичай працює
   ```
4. Зупиніть контейнер 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. Спробуйте скинути всі очікуючі зміни історії.

   Це має бути скиданням за принципом best effort, оскільки в деяких проєктів історія пошкоджена через невдалу міграцію бази даних. Будь-які збої буде усунуто повторною синхронізацією історії наприкінці процесу відновлення.

   <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) резервну копію екземпляра.
{% endstep %}

{% step %}

#### Оновіть

Оновіть до версії `5.0.3`.
{% endstep %}

{% step %}

#### Автоматичне відновлення

Процес відновлення автоматично запускається під час запуску контейнера.
{% endstep %}

{% step %}

#### Слідкувати за прогресом

Ви можете стежити за ходом виконання скрипта, переглядаючи журнал `/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 %}

#### Дочекайтеся завершення процесу відновлення

Дочекайтеся завершення процесу відновлення, або переглядаючи вищезгаданий файл журналу, доки не `Готово.` буде виведено рядок або доки `Відновлення версій документів завершено.` не буде виведено до стандартного виводу контейнера 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-id для тесту, замінюючи `000000000000000000000000` по одному project-id за раз.)
2. Відкрийте редактор проєкту для проєктів `https://my-server-pro.example.com/project/000000000000000000000000`
3. Відкрийте панель «Історія» для проєкту та перегляньте останній вміст.
4. За бажанням: знову закрийте панель «Історія». Внесіть зміну в код, наприклад додайте коментар до заголовка.
5. За бажанням: виконайте повторну компіляцію, щоб запустити скидання локальної зміни. Знову відкрийте панель «Історія» і перегляньте зміну. Коли закінчите, скасуйте зміну.
   {% endstep %}

{% step %}

#### Для горизонтального масштабування...

Знову запустіть інші воркери.
{% endstep %}

{% step %}

#### Залишайте екземпляр запущеним

Будь ласка, залишайте екземпляр, на якому було виконано процес відновлення, запущеним. Він повторно синхронізуватиме історію для всіх проєктів у фоновому режимі з паралельністю 1. Це призведе до дещо підвищеного базового навантаження. (Ви можете перезапустити екземпляр, але тоді йому доведеться почати повторні синхронізації спочатку.)
{% 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/uk/pidtrimka/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.
