> 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/ar/aldam/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
   run: real-time-sharelatex: (pid 394) 50s, want down, got TERM
   # انتظر قليلًا أكثر...

   $ docker exec sharelatex sv status real-time-overleaf
   متوقف: real-time-sharelatex: 7s، عادةً يكون قيد التشغيل
   ```
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. حاول إفراغ أي تغييرات معلّقة في السجل.

   سيحتاج هذا إلى أن يكون إفراغًا بأفضل جهد ممكن، إذ إن بعض المشاريع لديها سجلات معطلة بسبب ترحيل قاعدة البيانات السيئ. ستتم معالجة أي حالات فشل عبر إعادة مزامنة السجل في نهاية عملية الاستعادة.

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

   (كرر مع كل معرّفات المشاريع المراد اختبارها، واستبدل `000000000000000000000000` بمعرّف مشروع واحد في كل مرة.)
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://ayakaleaf-pro.ayaka.space/on-premises/ar/aldam/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.
