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

# (Migración v5.0.1) Recuperación de la versión del documento

{% hint style="info" %}
Si nunca ejecutaste Server Pro versión 5.0.1 o Community Edition versión 5.0.1, o si iniciaste una instancia completamente nueva con 5.0.1, no necesitas ejecutar este proceso de recuperación.
{% endhint %}

**Actualizaciones de esta página:**

* (2024-04-22 13:40 BST): Se añadió el paso "Detener las nuevas actualizaciones para que no entren en el sistema y vaciar todos los cambios a MongoDB".
* (2024-04-23 11:45 BST): Tener en cuenta los vaciados defectuosos en 5.0.1 y omitir los vaciados cuando se haya iniciado 5.0.2.

La duración de la recuperación dependerá del número y tamaño de los proyectos en tu instancia y del backend de almacenamiento utilizado por el almacén de historial para los fragmentos (según se define en `OVERLEAF_HISTORY_CHUNKS_BUCKET`).

El proceso de recuperación retrasará el inicio de la aplicación dentro del contenedor Server Pro. El sitio parecerá estar fuera de línea durante ese tiempo. Solo admitimos ejecutar la recuperación desde una sola instancia del contenedor Server Pro; todos los demás workers de escalado horizontal deben estar fuera de línea.

Puedes detener y reanudar el proceso de recuperación si es necesario.

Según nuestras pruebas de rendimiento, el proceso de recuperación puede procesar aproximadamente 10 mil proyectos pequeños por minuto en hardware moderno (velocidad de reloj de CPU de 3 GHz y almacenamiento local NVMe). Como ejemplo, para una instancia con 100 mil proyectos, programa una ventana de mantenimiento que permita al menos 10+2 min de inactividad. Usa la siguiente consulta para estimar el número de proyectos en tu instancia:

{% code overflow="wrap" %}

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

{% endcode %}

Por favor, lee completas las siguientes etapas de recuperación antes de empezar. Los clientes de Server Pro son más que bienvenidos a contactar con <support@overleaf.com> con cualquier pregunta.

### Proceso de recuperación

{% stepper %}
{% step %}

#### Descargar imágenes de la versión

Descarga las `5.0.3` imágenes de la versión.
{% endstep %}

{% step %}

#### Identificar algunos proyectos

Identifica algunos proyectos por id que no tengan historial; idealmente tienes permiso para hacer un cambio en uno de ellos.
{% endstep %}

{% step %}

#### Programar mantenimiento

Programa una ventana de mantenimiento para la inactividad.
{% endstep %}

{% step %}

#### Detener todos menos un worker

Detén todos menos un worker cuando uses una configuración de escalado horizontal.
{% endstep %}

{% step %}

#### Detener nuevas actualizaciones y volcar todos los cambios a MongoDB

Detén las nuevas actualizaciones para que no entren en el sistema y vuelca todos los cambios a MongoDB:

1. Cierra el editor y desconecta manualmente a todos los usuarios a través del panel de administración en `https://my-server-pro.example.com/admin#open-close-editor` en la pestaña "Abrir/Cerrar editor".
2. Detén el servicio Websocket/en tiempo real.

   ```bash
   $ docker exec sharelatex sv stop real-time-overleaf
   ```
3. Espera a que el servicio en tiempo real se cierre, como lo indica `apagado:`.

   ```bash
   $ docker exec sharelatex sv status real-time-overleaf
   run: real-time-sharelatex: (pid 394) 50s, se esperaba apagado, se recibió TERM
   # espera un poco más...

   $ docker exec sharelatex sv status real-time-overleaf
   apagado: real-time-sharelatex: 7s, normalmente activo
   ```
4. Detén el contenedor git-bridge si está habilitado.

   ```bash
   $ docker stop git-bridge
   ```
5. Si nunca ejecutaste 5.0.2: realiza un vaciado manual para las actualizaciones de documentos y espera a que termine con éxito.

   Puedes repetir el comando si hay error. En caso de que veas un `failureCount` distinto de cero en ejecuciones sucesivas, detén la migración (restaura los servicios mediante `docker restart git-bridge sharelatex`) y contacta con soporte.

   <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":"se completó el vaciado de todos los proyectos","time":"...","v":0}
   Vaciado de todos los proyectos completado
   </code></pre>
6. Si nunca ejecutaste 5.0.2: asegúrate de que todos los cambios se hayan vaciado de redis.

   Si obtienes cualquier salida de `redis-cli`, detén la migración (restaura los servicios mediante `docker restart git-bridge sharelatex`) y contacta con soporte.

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">$ docker exec redis redis-cli --scan --pattern 'DocVersion:*'
   # que no haya salida de redis-cli indica éxito; comprueba a continuación el código de salida de redis-cli, debería ser cero
   $ echo $?
   0
   </code></pre>
7. Intenta vaciar cualquier cambio de historial pendiente.

   Esto deberá ser un vaciado de mejor esfuerzo, ya que algunos proyectos tienen historiales rotos debido a la mala migración de la base de datos. Cualquier fallo se abordará resincronizando el historial al final del proceso de recuperación.

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

#### Haz una copia de seguridad

Considera hacer una [copia de seguridad coherente](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) de la instancia.
{% endstep %}

{% step %}

#### Actualizar

Actualizar a la versión `5.0.3`.
{% endstep %}

{% step %}

#### Recuperación automática

El proceso de recuperación se ejecuta automáticamente al iniciar el contenedor.
{% endstep %}

{% step %}

#### Sigue el progreso

Puedes seguir el progreso del script observando el archivo de registro `/var/lib/overleaf/data/history/doc-version-recovery.log`. Imprimirá el número total de proyectos al inicio y un resumen después de cada 1000 proyectos procesados.

{% code overflow="wrap" %}

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

{% endcode %}
{% endstep %}

{% step %}

#### Espera a que finalice el proceso de recuperación

Espera a que finalice el proceso de recuperación ya sea observando el archivo de registro anterior hasta que se haya impreso una `Hecho.` línea o esperando a que `Recuperación de versiones de documentos finalizada.` se imprima en la salida estándar del contenedor Server Pro.
{% endstep %}

{% step %}

#### Validar el proceso de recuperación

Valida el proceso de recuperación abriendo el panel de historial de algunos de los proyectos que anteriormente carecían de historial.

1. Acelera la resincronización de los proyectos a probar (se procesarán eventualmente, pero no queremos esperar a que les llegue su 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>

   (Repite con cada uno de los ids de proyecto a probar, reemplaza `000000000000000000000000` por un id de proyecto a la vez.)
2. Abre el editor del proyecto para los proyectos `https://my-server-pro.example.com/project/000000000000000000000000`
3. Abre el panel "Historial" del proyecto y observa el contenido más reciente.
4. Opcional: Cierra de nuevo el panel "Historial". Haz un cambio en el código, como añadir un comentario al encabezado.
5. Opcional: lanza una recompilación para provocar un vaciado del cambio local. Abre de nuevo el panel "Historial" y observa el cambio. Cuando termines, deshaz el cambio.
   {% endstep %}

{% step %}

#### Para escalado horizontal...

Vuelve a iniciar los demás workers.
{% endstep %}

{% step %}

#### Mantén la instancia en ejecución

Por favor, mantén en ejecución la instancia que ejecutó el proceso de recuperación. Resincronizará el historial de todos los proyectos en segundo plano con una concurrencia de 1. Esto resultará en una carga base ligeramente mayor. (Puedes reiniciar la instancia, pero tendrá que empezar de nuevo con las resincronizaciones.)
{% endstep %}

{% step %}

#### Avísanos cuando hayas terminado

Clientes de Server Pro: por favor, avisa al equipo de soporte cuando hayas completado el proceso de recuperación.
{% 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/es/soporte/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.
