اصلاح وتنظيف قواعد البيانات لمواقع الوردبريس

فى الموضوع الحالى سنتعرف سويا على طريقة سهلة بعض الشئ لصيانة قواعد البيانات PHPMySql المستخدمة فى مواقع الووردبريس.

والدرس التالى مبنى على تجربة عملية عندما كنت أقوم بنقل موقعى من السيرفر المحلى الى سيرفر الاستضافة على الانترنت, وبداية القصة عندما كنت أستخدم اضافة دابليكاتور وهى من< الاضافات الرائعة المستخدمة فى نقل أى موقع ووردبريس من مكان لآخر فى سهولة منقطعة النظير.

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

ولكى لا أطيل فى الكلام, سندخل فى لب المشكلة مباشرة, كانت عملية زرع قاعدة البانات على السيرفر تفشل دائما, واعتقدت فى البداية أن السبب هو حدوث تايم اوت بسبب بطئ الاتصال, ولكن حجم قاعدة البيانات لم يكن بهذا الحجم الكبير,

وبعد محاولات كثيرة لمعرفة سبب فشل عملية النقل, اكتشفت ما يلى:

كان سبب الفشل هو وجود عدد كبير من حقول البيانات فى قاعدة البيانات تجاوز عدد 100.000 صف من البيانات, وهذا عدد كبير اذا كان الموقع على استضافة مشتركة shared hosting حيث أن أقصى عدد من الاستعلامات مسموح به ليوزر قاعدة البيانات هو 50.000 فى الساعة, وبالتالى فان أى محاولة لزرع قاعدة البيانات بهذا الحجم من الصفوف سينتهى بالفشل حتما. وكانت تظهر الرسالة التالية فى اللوج فايل:

#1226 – User ‘database-user’ has exceeded the ‘max_questions’ resource…

وكان سبب تعجبى هو لماذا هذا العدد الضخم من صفوف البيانات فى قاعدة بيانات لا يزيد عدد البوستات فيها عن 500 بوست على الأكثر.

ففتحت قاعدة البيانات من خلال مدير قواعد البيانات, واكتشفت هنا أن جدول wp-postmeta هو سبب كل المشاكل, حيث كان متضخما جدا حيث كان يحتوى على أكثر من 70.000 صف من البيانات,

وكلنا نعرف أن هذا الجدول يحتوى على كافة البيانات التى تخزنها الاضافات التى يتم تركيبها ولكن عند حذفها تظل هذه البيانات كما هى وتشكل عبئا على قاعدة البيانات.

حاولت استخدام اضافات مخصصة لصيانة قاعدة البيانات ولكنها كلها كانت تنحصر فى حذف التعليقات السبام, أو حذف الجداول التى لم تعد مستخدمة, وحذف الريفيشن أو الدرافت… الخ.

ولكن أيا منها لم يكن يقترب اطلاقا من هذا الجدول لمحاولة تنظيفه من بقايا الاضافات التى لم تعد مركبة فى على الموقع.

فيما يلى الطريقة التى اتبعتها لتنظيف وتنقية جدول wp-postmeta حتى أصبحت عدد الصفوف فيه أقل من 8.000 صف فقط من البيانات. وانعكس ذلك على سرعة وكفاءة الموقع بعد ذلك.

هنا صورة لجداول قاعدة البيانات قبل التنظيف والتنقية:

Image and video hosting by TinyPic

– لاحظ عدد الصفوف فى جدول wp-postmeta حيث تجاوز عدد 70.000 فى حين أن عدد الصفوف فى جدول wp-posts حوالى 2800 صف فقط.

معظم هذه الصفوف هى عبارة عن حقول خاصة Custom Fields تنشئها الاضافات المختلفة ولا يتم حذفها فى حالة حذف الاضافة نهائيا.

– سنستخدم اضافة بحث واستبدال يمكن تركيبها من موقع الاضافات بالوردبريس. وهى اضافة تستخدم للبحث عن أى شء فى قاعدة البيانات واستبداله بقيمة أخرى, وأنا هنا لن أستخدمها لهذه المهمة بالتحديد, ولكننى سأستخدمها لأنها تقوم باظهار جملة الاستعلام التى تستخدمها فى عملية البحث, حيث أننى ليس لدى أية خبرة فى لغة الاستعلامات SQL.

– قم بالدخول الى مدير قواعد البيانات PhpMyAdmin واتجه مباشرة الى جدول wp-postmeta سترى فى هذه الصورة:

Image and video hosting by TinyPic

هنا كافة الحقول التى تنشأها معظم الاضافات وتظل كما هى حتى فى حالة حذفها. ستجد تحت الخطوط الزرقاء حقول مخصصة لبعض اضافات كنت أستخدمها ثم حذفتها.

اذا كنت خبيرا فى لغة استعلام البيانات فيمكنك البحث عن أى منها ومعرفة كم عددها مباشرة, ولكن اذا كنت مثلى فسنتبع الآتى:

قم بتحديد أحد هذه الحقول, وليكن: _yoast_wpse
وهى مجموعة حقول قامت بانشائها الاضافة الشهيرة Yoast التى تستخدم لتهيأة الموقع لمحركات البحث.

أو _count_view
و هو حقل بيانات انشأته اضافة كنت أستخدمها لتعداد الزوار ثم حذفتها, قم بنسخ اسم الحقل واذهب الى اضافة البحث والاستبدال فى الداشبورد: الموضحة فى الصورة التالية:

اتبع العلامات فى الصورة التالية من أجل البحث عن القيمة السابقة فى جدول الميتا فى قاعدة البيانات, الصورة واضحة ولا تحتاج لشرح.

Image and video hosting by TinyPic

هنا نتيجة البحث وستجد أن هذه الاضافة فقط أنشات حوالى 4900 من صفوف البيانات التى مازالت موجودة رغم حذف الاضافة.

Image and video hosting by TinyPic

– هام جدا: الهدف من استخدامى لهذه الاضافة هو البحث فقط والحصول على الجملة الاستعلامية المستخدمة, فى الصورة السابقة ستجد الجملة الاستعلامية محاطة بصندوق أزرق.

– قم بتظليل هذه الجملة وانسخها.

– قم بالذهاب الى PHPMyAdmin واتجه الى SQL الواضحة فى اعلى الصورة التالية:

Image and video hosting by TinyPic

– قم بلصق الجملة الاستعلامية فى الصندوق المبين فى الصورة السابقة, ولكن هنا استبدل “DELETE FROM” بكلمة “SELECT * FROM”

– اضغط Go وسيتم حذف كافة الحقول المخصصة من قاعدة البيانات

هذا كل شئ.

قم بتكرار ما سبق مع كافة أسماء الحقول التى تعتقد أنها كانت لاضافات قمت بتركيبها فى السابق.

أنظر فى الصورة التالية, اضافة واحدة أنشات اكثر من 50.000 صف بيانات:

Image and video hosting by TinyPic

أرجو أن يكون الشرح مفهوم وأعتذر اذا حدث بعض اللبس أو كانت بعض الامور غير واضحة.

يمكنك تحميل الاضافة المستخدمة للبحث والاستبدال من الوصلة التالية:

[sociallocker]
Download Search & Replace WordPress Plugin
[/sociallocker]

شاهد الفيديوهات التالية عن قواعد البيانات للوردبريس
[tubepress mode=”tag” tagValue=”انشاء قاعدة بيانات للوردبريس”]

14 Comments
  1. مشكورعلى الموضوع، انا اواجه مشكلة عندي بالموقع وهي: فصل الاتصال بقاعدة البيانات لما يصير عندي ضغط زوار على الموقع وتظهر صفحة تنصيب ورد برس للزوار أو رسالة فشل الاتصال بقاعدة البيانات
    ولكن لدي بعض الاستفسارات
    • ما اسم إضافة البحث والاستبدال التي استخدمتها، لأن الرابط أظهر لي عدة إضافات تقوم بنفس الوظيفة
    • ما اسم الإضافة التي ذكرتها في بداية الموضوع والتي تستخدمها لنقل الموقع من سيرفر لأخر
    • هل تعرف إضافة تمكنني من نقل كافة الموضوعات من قسم لأخر داخل الموقع جملة واحدة

    • السلام عليكم روحمة الله,,,

      المشكلة التى تواجهها تحدث نتيجة وجود حدود معينة لعدد الاستعلامات التى يقوم بها يوزر قاعدة البيانات DB User, فمعظم شركات الاستضافة تحدد عدد الاستعلامات التى يقوم بها اليوزر بحوالى 50.000 استعلام فى الساعة أو (100.000) واذا تجاوز هذا العدد يتم عمل بلوك لقاعدة البيانات لفترة معينة قد تصل الى الساعة, وفى خلال هذه الفترة اذا تم عمل اتصال بالموقع فان الووردبريس يحاول الاتصال بقاعدة البيانات التى تم عمل بلوك لها وبالتالى يعتقد أنه لا توجد قاعدة بيانات أصلا, فيقوم بعمل تحويل (ريدايركت) لصفحة التركيب استعدادا لتركيب موقع الووردبريس كما هو معروف فى طريقة تركيب الووردبريس.

      هذه المشكلة تحدث اذا كانت صفحات موقعك تحتوى على الكثير من الخصائص والاضافات وبالتالى على كثير من الاستعلامات, ومن المعروف ان متوسط صفحة الووردبريس حاليا قد تحتوى

      على أكثر من 150 استعلام لقاعدة البيانات, هذا يعنى أن مجرد ألف زائر فى أقل من ساعة لصفحة واحدة فقط معناه توليد أكثر من 150*1000=150.000 استعلام, وبالتالى عمل بلوك لقاعدة البيانات بشكل متكرر.

      بقى أن تعرف أن بعض شركات الاستضافة الكبري مثل جودادى ونيمشيب لا تضع مثل هذه القيود وبالتالى لا تواجه مثل هذه المشكلة مهما زاد عدد زوار موقعك.

      بالنسبة لاستفساراتك الأخرى:

      * اضافة البحث والاستبدال: Search & Replace
      هذه الاضافة لم تعد موجودة فى موقع الووردبريس, ويمكنك تجربة البحث عن اضافة بديلة باستخدام الكلمة: Search & Replace
      آسف لذلك

      * اضافة دابليكاتور التى تستخدم لنقل الموقع بالكامل من سيرفر لآخر: Duplicator
      https://wordpress.org/plugins/duplicator/
      هذه الاضافة مجانية ومن أروع وأفضل ما صادفت من اضافات الووردبريس ولا غنى عنها لمدير أى موقع, يمكنها نقل أى موقع بالكامل من سيرفر لآخر فى دقائق معدودة. كما يمكنها
      نقل أى موقع من دومين لدومين آخر جديد بدون أية مشاكل. بحق روعة.

      * توجد اضافة تسمح بنقل كافة الموضوعات من قسم لآخر ولكننى لم أجربها, يمكنها تجربتها بنفسك:
      https://wordpress.org/plugins/bulk-move/

      تقبل تحياتى,,,,

      • أخى الكريم

        أى حل بخصوص هذه المسالة سيكون حلا ثانويا مؤقتا طالما هناك تحديد لعدد الاستعلامات لمستخدم قاعدة البيانات, والحل النهائى لهذه المشكلة هو البحث عن استضافة لا تضع هذا القيد.

        وصدقنى عن تجربة شخصية فقد حاولت كل شئ, قمت بتنظيف قاعدة البيانات, وقمت بتغيير الثيم الى ثيم أقل فى المواصفات وحاولت حذف الكثير من الاضافات, كما استخدمت اضافة تقوم بعمل كاش لاستعلامات قاعدة البيانات, ولكن كل هذه حلول مؤقتة فبمجرد زيادة الترافيك تعود المشكلة للظهور.

        ولم أتمكن من حل المشكلة نهائيا الا بعد تغيير شركة الاستضافة.

        هذه تجربتى الشخصية بشكل مبسط ومختصر, والقرار النهائى لك.

        – بالطبع أنصحك بشدة بأخذ نسخة من قاعدة البيانات قبل القيام بأى اجراء عليها تحسبا لأى أمور غير متوقعة.

      • شاكر جدا جدا لردك وسعيد انك وضحت الي المشكلة بالضبظ والحمد لله استوعبت المشكلة ولكن شو الحل يعني الشرح المدونة بالأعلى يفيدني اذا طبقتو رغم اني لما دخلت على قاعدة البيانات كانت الواجهة مختلفة بعض الشيء عن التي لديك .
        هل تنصحني بالقيام باخد نسخة من قاعدة البيانات قبل ما اشتغل فيها
        انا بدي حل سريع للمشكلة هل احذف اضافات من الموقع ؟؟؟
        وشو اضافة serach& Replace الي ممكن اعتمد عليها بترشحلي اياها
        هل ازا رفعت DB user الى 150000 بتنحل المشكلة انا استضافتي اي بيج بسمحو لحد 75000 استعلام بالساعة
        انا بانتظار ردك قبل ان اقوم باي شي فانا محتاج جدا لمساعدتك

  2. اخي الكريم
    شاكر لاهتمامك اعرف ان حل مشكلتي باستضافة جديدة ولكن بالوقت الحالي صعب
    انا وجدت بان جدول البوست ميتا لدي متضخم جدا حيث وصل عدد السجلات (records) فيه الى 13000 فيه لا اعرف اذا كانت السجلات تعني فيه الصفوف ولكن اذا قمت بحذف او تفريغ هذا الجدول هل يؤثر على الموقع او قاعدة البيانات؟؟؟؟ اذا تكرمت اريد جواب سريع واتمنى ان يتسع صدرك لي فانا اطمع بمساعدتك لأنني لم اجد على الانترنت اي حل سوى عندك

    • أخى الكريم,,, شكرا لتعليقك

      بالنسبة للعدد 13.000 سجل, فهذا لا يعتبر عدد ضخم ولا حاجة, فهو عدد بسيط جدا وهو يعنى أن موقعك يحتوى على حوالى 200 – 1000 بوست على أكثر تقدير, فما بالك بموقع يحتوى على آلاف التدوينات…

      هذا الجدول “الميتا” من اهم جداول قاعدة بيانات الووردبريس, وأى مساس به بدون خبرة أو دراية سوف يسبب تدمير الموقع بلا شك, وباختصار فان هذا الجدول هو الذى يتضمن كل المعلومات المتعلقة بالتدوينات, ويزيد عدد السجلات بشكل كبير كلما استخدمت اضافات ووردبريس مثل اضافات عددا الزوار والتى تضيف سجلات اضافية مرتبطة بمعلومات عن كل تدوينة, وهكذا…

      ومشكلة معظم اضافات ووردبريس هى أنها لا تقوم – بعد حذفها – بعملية تنظيف للسجلات التى تسببت فى اضافتها الى جدول الميتا, حتى بعد حذفها, وتظل موجودة بلا فائدة.

      وللأسف فانه لا توجد وسيلة مباشرة تمكنك من حذف أى سجلات لم تعد مستخدمة وتشكل عبء على قاعدة البيانات.

      توجد وسيلة غير مباشرة وتعتبر الحل الوحيد الذى يمكن اتباعه – على الأقل فى حدود معلوماتى حتى الآن – وهى أن تقوم باعادة تركيب موقعك من البداية ويمكن تلخيص ذلك بخطوات بسيطة:

      – قم بعمل تصدير لكل التدوينات والصفحات الموجودة فى موقعك, من السايدبار اختر: ” أدوات” ثم “تصدير”.

      – ستمكنك هذه الأداة من تصدير كل تدوينات موقعك وصفحاته فى صورة ملف XML

      – قم بتركيب نسخة جديدة تماما من الووردبريس.

      – قم بعمل استيراد للملف السابق فيتم استيراد كل التدوينات والصفحات.

      – لا تنسى حفظ كل ملفات الصور والملفات وكل محتويات دليل wp-content

      – أنصحك بشدة بتجربة الخطوات السابقة على السيرفر المحلى أولاً تحسبا لوقوع أى مشاكل غير متوقعة.

      هكذا تكون قد أعدت لموقعك حيويته وشبابه كما كان فى أول أيامه وقبل تركيب اى اضافات .

      أرجو أن يكون فيما سبق الفائدة لك ولمشكلتك

  3. شكرا اخي لردك
    يبدو انني اخطأت بكتابة الرقم فهو في الحقيقة 130000
    بس اخطأت البارحة خطا كبير وقمت بخطوة غير مدروسة وقمت بحذف ملف الميتا بس كنت ميخد منو نسخة احتياطية ولكن للأسف لم تكت النسخة الاحتياطية كاملة يعني بعد ما رجعت الجدول صار حجمو 10000 بعد ما كان حجمو 130000 وبالتالي الموقع وكل التدوينات الي عددها حوالي اربع الاف تخربطت وبطل الها سيو ولا صورة رمزية
    حتى الاقئمة الرئيسية توقفت عن العمل وبالتالي وقعت في مشكلة اكبر وفو قكل ذلك مشكلة التنصيب لا زالت تظهر
    سأرسل لك رابط الموقع للمعاينة
    http://www.nb3asala.com

  4. اخي العزيز حاتم
    هناك ملف اسمو install.php هل هذا الملف هو المسؤول عن ظهور صفحة التنصيب عندما بفتح الزوار الموقع ويجدوه تنصيب ورد برس
    فلو قمت بحذف هذا الملف هل يؤئر شيء او يخرب تنصيب ورد برس الأصلي
    ارجو الرد انا بانتظارك

    • السلام عليكم

      نعم ملف التركيب الذى ذكرته هو الملف المسئول عن ظهور صفحة التركيب التى يتم عمل ريدايركت لها عند زيارة الموقع, حيث كما قلت سابقا اذا انقطع الاتصال بقاعدة البيانات لأى سبب, فان الووردبريس يعتقد أنه لا يوجد موقع وبالتالى يبدأ فى تشغيل ملف التركيب اتعدادا لعملية تنصيب الووردبريس وانشاء قاعدة بيانات جديدة.

      حذف ملف التركيب لن يحل المشكلة نهائيا, وأيضا لن تتمكن من تركيب الووردبريس, واذا حذفته فيمكنك نسخه مرة أخرى من حزمة تركيب ووردبريس الأصلية.

  5. بارك الله في يد كاتب هذا الشرح المتعمق حقيقي انا تمكنت من تنفيذ بعضه و ليس كله و لكن أسعى الان إلى تطبيقه بشكل كامل .. شكرا لكم .

  6. بالفعل الطريقة صحيحة ومفيدة للغاية وأيضاً بعض الإضافات تسبب في وجود جداول كثيرة في قاعدة البينات لإنها لا يتم حذفها بعد حذف الإضافة بإمكانك وضع شرح للتخلص من هذة الجداول تحياتي

  7. شكرا لك على المحتوى المتميز

  8. شرح مميز جدا هذا ما كنت ابحث عنه شكرا لكم

Leave a reply

Compare items
  • Total (0)
Compare
0