كيفية تحسين فهارس قاعدة بيانات ownCloud 10 بأمان

قد يشير بطء عرض مجلدات ownCloud، أو تأخر المزامنة، أو طول مدة تشغيل مهمة cron، إلى وجود اختناق في قاعدة البيانات، ولكن إضافة الفهارس بشكل عشوائي قد يقلل من موثوقية الخادم. في ownCloud Server 10، تتمثل نقطة البداية الآمنة في التحقق من الإصدار وقاعدة البيانات بدقة، ثم إنشاء نسخة احتياطية من المثيل، وبعد ذلك استخدام تغييرات المخطط الموثقة لهذا الإصدار من ownCloud فقط. تُساعد الفهارس في عمليات البحث والربط الانتقائية، ولكنها تستهلك مساحة تخزين وتزيد من الجهد المبذول في عمليات الإضافة والتحديث.

يوجد فرق هام بين الإصدارين: يوثق دليل أوامر ownCloud Server 10.16 الرسمي الحالي عمليات قواعد البيانات مثل تحويلها، ولكنه لا يوثق db:add-missing-indicesأمر إصلاح عام. يظهر هذا الأمر في دليل Nextcloud، وهو منتج منفصل. تحقق من الأوامر على خادمك قبل تشغيل أي أمر منسوخ من مشروع آخر.

يعرض طرفية لينكس في دليل تثبيت ownCloud أمر occ status وحقول حالة التثبيت والصيانة.
يؤكد الأمر occ statusأن واجهة سطر الأوامر تصل إلى تثبيت ownCloud قبل بدء العمل على قاعدة البيانات.

ما يمكن لفهرس قاعدة البيانات إصلاحه - وما لا يمكنه إصلاحه

يُعدّ فهرس قاعدة البيانات بنيةً مساعدةً تُسهّل على قاعدة البيانات تحديد الصفوف المطابقة دون الحاجة إلى مسح الجدول بأكمله. يُمكنه تحسين الاستعلامات التي تُجري عمليات التصفية أو الربط أو الفرز بناءً على الأعمدة المفهرسة، وذلك عندما يكون الاستعلام وتوزيع البيانات مناسبين لهذا الفهرس. وهو ليس مُحسِّن سرعة عامًا، إذ يُمكن لمُحسِّن قاعدة البيانات اختيار مسح الجدول الأمثل للجداول الصغيرة أو الاستعلامات التي تُعيد نسبةً كبيرةً من الصفوف.

للفهارس تكاليفها أيضًا. فهي تستهلك مساحة تخزين، وتحتاج إلى صيانة عند تغيير الصفوف، وقد تُبطئ العمليات التي تتطلب كتابة مكثفة. قد تتعارض الفهارس الإضافية على جداول ownCloud الأساسية مع عمليات ترحيل المخطط أو توقعات التطبيق. لا تُضف فهرسًا لمجرد أن اسم عمود ما يبدو مهمًا؛ حدد أولًا الطلب البطيء وتأكد من أن خطة الاستعلام الفعلية غير فعالة.

1. تأكد من إصدار ownCloud وقاعدة البيانات

قم بتشغيل الأوامر من مجلد تثبيت ownCloud باستخدام حساب خادم الويب. في تثبيت نموذجي لنظامي Debian أو Ubuntu، يكون هذا الحساب هو www-data:

cd /var/www/owncloud
sudo -u www-data php occ status
sudo -u www-data php occ list

استخدم المسار وحساب الخدمة المُهيأين على جهازك المضيف. في Docker، استخدم صيغة الأوامر الموثقة للحاوية - على سبيل المثال، يستخدم دليل ownCloud الأمر ` docker compose exec owncloud occ …. يُحدد مُخرج الحالة إصدار ownCloud ونوع قاعدة البيانات. تُظهر قائمة الأوامر ما يدعمه هذا التثبيت فعليًا؛ إذا لم يكن أمر إصلاح قاعدة البيانات مُدرجًا، فلا تفترض أن تعليمات Nextcloud تنطبق.

راجع نظرة عامة على إعدادات ownCloud بحثًا عن تحذيرات الإعداد، وسجّل أسماء الجداول والفهارس بدقة إذا أبلغ عن فهرس مفقود. سجّل أيضًا ما هو بطيء: عملية بحث معينة عن ملف، أو صفحة مشاركة، أو مهمة تعمل في الخلفية، أو عملية مزامنة. الشكوى العامة مثل "ownCloud بطيء" لا تكفي لتبرير تغيير المخطط.

يعرض طرفية في مسار تثبيت ownCloud قائمة occ وتذكيرًا بمراجعة الأوامر المتاحة في هذا التثبيت.
استخدم occقائمة الأوامر المثبتة للتحقق من الإصدار؛ قد يختلف توفر الأوامر بين ownCloud و Nextcloud.

2. قم بعمل نسخة احتياطية قبل تغيير بنية قاعدة البيانات

قبل إنشاء أي فهرس، أو ترحيل قاعدة البيانات، أو إصلاحها، احرص على أخذ نسخة احتياطية متسقة من قاعدة البيانات وإعدادات ownCloud، وتأكد من معرفة كيفية استعادتها. يوصي دليل النسخ الاحتياطي لـ ownCloud بتفعيل وضع الصيانة قبل أخذ نسخة احتياطية من قاعدة البيانات. يختلف أمر تفريغ قاعدة البيانات الدقيق حسب نوع قاعدة البيانات التي يستخدمها الخادم، سواء كانت MySQL أو MariaDB أو PostgreSQL أو SQLite؛ استخدم أدوات موفر قاعدة البيانات المناسبة، واحرص على حماية بيانات الاعتماد وملفات النسخ الاحتياطي.

sudo -u www-data php occ maintenance:mode --on
# Back up the database and ownCloud configuration with your vendor's procedure
# Confirm that the backup can be restored before proceeding

يمنع وضع الصيانة الاستخدام العادي أثناء الصيانة؛ لذا يُرجى تحديد فترة زمنية للصيانة في بيئة الإنتاج. لا تقم بنسخ ملف قاعدة البيانات قيد التشغيل كبديل عن النسخ الاحتياطي المُتوافق مع قاعدة البيانات. بمجرد اكتمال العمل والفحوصات الأساسية، أعد النظام إلى الوضع العادي.

sudo -u www-data php occ maintenance:mode --off
تتضمن قائمة التحقق الطرفية وضع الصيانة، ونسخة احتياطية من قاعدة البيانات والتكوين، وتأكيد إجراء الاستعادة قبل إجراء تغييرات على قاعدة البيانات.
قم بعمل نسخة احتياطية قابلة للاستعادة من قاعدة البيانات والتكوين قبل محاولة إجراء تغيير في الفهرس أو المخطط.

3. استخدم عمليات الترحيل المُدارة بواسطة ownCloud لإجراء تغييرات على مخطط ownCloud

قم أولاً بتحديث ownCloud والتطبيقات المتوافقة معه إلى إصدار مدعوم باتباع تعليمات التحديث الرسمية وملاحظات الإصدار. تُجري ترقيات ownCloud عمليات ترحيل لقاعدة البيانات تُطوّر المخطط، بما في ذلك التغييرات المطلوبة من قِبل النظام الأساسي والتطبيقات. توصي الإرشادات الرسمية بتنفيذ خطوة ترقية قاعدة البيانات بشكل كامل occللأنظمة الكبيرة، حيث قد تنتهي مهلة طلب الويب.

إذا استمرّت نظرة عامة المسؤول في الإبلاغ عن وجود فهرس مفقود، فافحص sudo -u www-data php occ listالوثائق الرسمية ذات الصلة بإصدار ownCloud الخاص بك. تُشير بعض الأدلة الخارجية إلى db:add-missing-indicesوجود هذا الأمر، لكنه غير موثّق في قسم أوامر قاعدة بيانات ownCloud 10.16 الذي تمت مراجعته في هذه المقالة. إذا كان إصدارك يُدرج هذا الأمر، فاقرأ تعليماته المحلية وتأكّد من الإجراء مع الوثائق أو مُورّد التطبيق لهذا الإصدار قبل تشغيله. في حال عدم وجود الأمر، لا تُثبّت أي أمر من أوامر Nextcloud، ولا تُعدّل جداول ownCloud الأساسية يدويًا، ولا تنسخ استعلامات SQL من إصدار آخر. شارك التحذير، وإصدار ownCloud، ونوع قاعدة البيانات، والسجلات ذات الصلة مع فريق ownCloud أو مُطوّر التطبيق.

تُستخدم أوامر قاعدة البيانات الموضحة في دليل ownCloud، مثل db:convert-type`or` db:convert-mysql-charset، في مهام تحويل محددة؛ فهي ليست أوامر عامة لضبط الفهرس. لا تستخدم أمر تحويل لمحاولة تحسين سرعة الاستعلام.

4. التحقق من الاستعلام البطيء باستخدام أدوات قواعد البيانات الأصلية

عند تحديد استعلام SQL بطيء، استخدم أدوات التحليل التي توفرها قاعدة البيانات. توفر MySQL وMariaDB هذه الأدوات EXPLAIN، كما يوفر PostgreSQL أداة أخرى EXPLAINمع مخرجاتها وخياراتها الخاصة. ابدأ بخطة تحليل تشرح الاستعلام دون تنفيذه. كن حذرًا عند استخدام خيار التحليل: فبعض قواعد البيانات تنفذ الاستعلام، مما قد يكون غير آمن لعمليات الكتابة أو مكلفًا على قواعد بيانات الإنتاج ذات الاستخدام المكثف.

EXPLAIN SELECT ... FROM oc_filecache WHERE ...;

تحقق مما إذا كانت خطة التنفيذ تقرأ عددًا أكبر بكثير من الصفوف مقارنةً بما تُرجعه الاستعلامات، وما إذا كان الفهرس المتوقع مُعتمدًا، وما إذا كانت عملية الفرز أو الربط هي العملية الرئيسية. لا يعني عدم اختيار مُحسِّن الاستعلامات أن الفهرس مفقود تلقائيًا؛ فإذا أرجعت الاستعلامات عددًا كبيرًا من الصفوف، فقد يكون إجراء مسح شامل أقل تكلفة. قارن نفس عبء العمل على نسخة تجريبية نموذجية قبل إجراء أي تغييرات خاصة بقاعدة البيانات. قد تتغير بنية SQL الأساسية وتخطيطات الجداول في OwnCloud بين الإصدارات، لذا قد يصبح الفهرس الذي يبدو مفيدًا اليوم زائدًا عن الحاجة أو غير آمن بعد الترقية.

تعرض محطة قاعدة البيانات عبارة EXPLAIN لاستعلام على جدول ذاكرة التخزين المؤقت لملفات ownCloud وتذكيرًا بفحص الخطة باستخدام أدوات بائع قاعدة البيانات.
اقرأ خطة استعلام خاصة بقاعدة البيانات للاستعلام البطيء الحقيقي قبل التفكير في أي فهرس مخصص.

5. أعد فحص العرض الأصلي

بعد اكتمال عملية نقل البيانات المدعومة أو إصلاح الفهرس المعتمد، راجع نظرة عامة على مسؤول ownCloud مرة أخرى، وتحقق من سجلات الخادم وقاعدة البيانات بحثًا عن الأخطاء. كرر نفس إجراء المستخدم أو مهمة الخلفية التي كانت بطيئة، باستخدام حجم بيانات وظروف مماثلة. قارن وقت الاستجابة، واستهلاك وحدة المعالجة المركزية أو عمليات الإدخال/الإخراج لقاعدة البيانات، والصفوف التي تم فحصها حيث تعرض قاعدة البيانات هذه القياسات. لا تُبلغ عن تحسن في الأداء ناتج عن اختبار صغير واحد أو تحميل صفحة غير ذات صلة.

إذا اختفى التحذير ولكن لا يزال الإجراء نفسه بطيئًا، فقد يكون سبب الاختناق في مكان آخر: زمن استجابة التخزين، أو عمليات PHP العاملة، أو رحلات الشبكة ذهابًا وإيابًا، أو تراكم مهام Cron، أو قفل الملفات، أو التخزين المؤقت في الذاكرة. توصي ownCloud بالتخزين المؤقت في الذاكرة وقفل الملفات الخارجية للمعاملات لتقليل حمل قاعدة البيانات. تعالج هذه الإعدادات مهامًا مختلفة عن فهرس قاعدة البيانات، لذا قم بضبطها وفقًا للدليل الرسمي وبنية النشر الخاصة بك.

قائمة مراجعة سريعة

  • سجل إصدار ownCloud ونوع قاعدة البيانات والإجراء المتأثر وأي تحذير إعداد دقيق.
  • تحقق من قائمة الأوامر المثبتة occ؛ وميز بين تعليمات ownCloud وتعليمات Nextcloud.
  • قم بأخذ نسخة احتياطية متسقة من قاعدة البيانات والتكوين والتحقق منها قبل بدء العمل على المخطط.
  • استخدم خطوات الترقية وترحيل التطبيقات المدعومة من ownCloud؛ لا تقم بتعديل الجداول الأساسية يدويًا بدون تعليمات خاصة بالإصدار.
  • استخدم أدوات تخطيط الاستعلام الخاصة بمورد قاعدة البيانات على الاستعلام البطيء الحقيقي، ثم كرر نفس عبء العمل للتحقق من النتيجة.

لا توجد مجموعة فهارس موحدة تجعل كل تثبيت لـ ownCloud 10 أسرع. يتمثل النهج الأمثل في تحديث المخطط المدعوم باستمرار، وتشخيص الاستعلام الفعلي، وتغيير ما هو موثق فقط من قبل المورد أو القائم بالصيانة، ثم التحقق من أداء نفس عبء العمل لاحقًا.

المراجع الرسمية

اترك تعليقاً

كيفية إعداد المصادقة الثنائية في ownCloud Infinite Scale

كيفية إعداد المصادقة الثنائية في ownCloud Infinite Scale

تعرف على كيفية طلب رمز التحقق من المفتاح (TOTP) من Keycloak لتسجيل الدخول إلى ownCloud Infinite Scale، وتسجيل المستخدمين الحاليين والجدد، وإعداد عملية الاسترداد، واختبار تسجيل الدخول الموحد (SSO) وترقية المصادقة متعددة العوامل (MFA).

كيفية تهيئة Keycloak كموفر هوية (IDP) لخدمة ownCloud Infinite Scale

كيفية تهيئة Keycloak كموفر هوية (IDP) لخدمة ownCloud Infinite Scale

قم بربط ownCloud Infinite Scale بـ Keycloak باستخدام OpenID Connect. قم بتهيئة مُصدر النطاق، وعميل الويب، والمطالبات، وTLS، وتوفير الحساب، وفحوصات تسجيل الدخول.

كيفية إعداد مجموعة Nextcloud عالية التوفر باستخدام قاعدة بيانات Galera

كيفية إعداد مجموعة Nextcloud عالية التوفر باستخدام قاعدة بيانات Galera

قم ببناء مجموعة Nextcloud مرنة باستخدام MariaDB Galera، والتخزين المشترك، وRedis، وموازنة الأحمال، وفحوصات النصاب، والاسترداد المختبر - بالإضافة إلى المقايضات التي يجب التخطيط لها.

كيفية إعداد النسخ الاحتياطي للمفاتيح والتوقيع المتبادل في Element: الخيارات والمفاضلات والاسترداد

كيفية إعداد النسخ الاحتياطي للمفاتيح والتوقيع المتبادل في Element: الخيارات والمفاضلات والاسترداد

تعرف على كيفية تكوين النسخ الاحتياطي لمفاتيح Element، ومفاتيح الاسترداد، والتوقيع المتبادل، ومقارنة المفاضلات الأمنية، والتحقق من الأجهزة، وتجنب فقدان السجل المشفر.

كيفية نقل صناديق بريد Zimbra إلى خادم جديد باستخدام Zextras Backup أو imapsync

كيفية نقل صناديق بريد Zimbra إلى خادم جديد باستخدام Zextras Backup أو imapsync

قارن بين Zextras Backup و imapsync لنقل خادم Zimbra. جهّز الحسابات، واختبر عملية النقل، وقم بمزامنة التغييرات، وانقل سجلات MX، وتحقق من بيانات البريد والتعاون.

إصلاح خطأ قاعدة البيانات في واجهة المستخدم الرسومية لـ Nextcloud بعد التحديث: دليل عملي للاستعادة

إصلاح خطأ قاعدة البيانات في واجهة المستخدم الرسومية لـ Nextcloud بعد التحديث: دليل عملي للاستعادة

قم بإصلاح خطأ قاعدة بيانات Nextcloud WebGUI بعد التحديث عن طريق التحقق من السجلات، وإكمال ترقية occ، وإصلاح مشكلات المخطط، والتحقق من سلامة قاعدة البيانات.

كيفية تفعيل إعادة توجيه HTTPS في خادم بروكسي زيمبرا

كيفية تفعيل إعادة توجيه HTTPS في خادم بروكسي زيمبرا

قم بتكوين Zimbra Proxy لإعادة توجيه حركة مرور البريد الإلكتروني من HTTP إلى HTTPS، وأعد تشغيل كل عقدة وكيل، وتحقق من إعادة التوجيه، وتجنب المخاطر الأمنية الشائعة.

كيفية دمج BigBlueButton مع نظام إدارة التعلم Moodle (خطوة بخطوة)

كيفية دمج BigBlueButton مع نظام إدارة التعلم Moodle (خطوة بخطوة)

قم بربط BigBlueButton بنظام إدارة التعلم Moodle باستخدام النشاط المدمج، وعنوان URL للخادم، والكلمة السرية المشتركة. اتبع ثماني خطوات لإعداد غرفة الدورة التدريبية واختبار وصول الطلاب.

كيفية تخصيص ألوان العلامة التجارية والسمات في واجهة مستخدم الويب الخاصة بـ ownCloud

كيفية تخصيص ألوان العلامة التجارية والسمات في واجهة مستخدم الويب الخاصة بـ ownCloud

قم بتخصيص العلامة التجارية لموقع ownCloud الإلكتروني باستخدام شعارك، وأيقونة الموقع، وخلفية تسجيل الدخول، واسم علامتك التجارية، وألوان السمة باستخدام إعدادات JSON للسمة المدعومة من Infinite Scale.

كيفية تكوين سجلات DKIM وSPF وDMARC لخادم Zimbra

كيفية تكوين سجلات DKIM وSPF وDMARC لخادم Zimbra

قم بتكوين توقيع Zimbra DKIM، وتفويض SPF، وسياسة DMARC بشكل صحيح، وتحقق من DNS والمحاذاة، وتجنب السجلات الشائعة التي تكسر مصادقة البريد.