> 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/ru/podderzhka/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 %}

#### Определите несколько проектов

Определите несколько проектов по ID, у которых отсутствует история; в идеале у вас должно быть разрешение внести изменение в один из них.
{% endstep %}

{% step %}

#### Запланируйте обслуживание

Запланируйте окно обслуживания на время простоя.
{% endstep %}

{% step %}

#### Остановите всех воркеров, кроме одного

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

{% step %}

#### Остановите новые обновления и сбросьте все изменения в MongoDB

Остановите новые обновления от попадания в систему и сбросьте все изменения в MongoDB:

1. Закройте редактор и вручную отключите всех пользователей через панель администратора по `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. Остановите контейнер 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":"finished flushing all projects","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) резервную копию экземпляра.
{% 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. Откройте для проекта панель «History» и посмотрите на самое свежее содержимое.
4. Необязательно: снова закройте панель «History». Внесите изменение в код, например добавьте комментарий в заголовок.
5. Необязательно: выполните повторную компиляцию, чтобы вызвать сброс локального изменения. Снова откройте панель «History» и посмотрите изменение. Когда закончите, отмените изменение.
   {% 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/ru/podderzhka/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.
