> 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/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 تبلغ 3GHz وتخزين 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` في علامة التبويب "Open/Close Editor".
2. أوقف خدمة Websocket/real-time.

   ```bash
   $ docker exec sharelatex sv stop real-time-overleaf
   ```
3. انتظر حتى تنتهي خدمة real-time، كما هو موضح بواسطة `متوقف:`.

   ```bash
   $ docker exec sharelatex sv status real-time-overleaf
   run: real-time-sharelatex: (pid 394) 50s, المطلوب الإيقاف، وتم استلام 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. افتح لوحة "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/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.
