دليل عملي

هجرة ‏MySQL 8.0 إلى 8.4 LTS على خادم VPS: دليل شامل

قواعد البيانات10 دقائق للقراءةعدد الخطوات: 9

في 30 أبريل 2026، أنهت ‏Oracle رسمياً دعم ‏MySQL 8.0: لن تُنشر أي تصحيحات أمنية لهذا الفرع بعد الآن. كل ثغرة أمنية مُكتشفة تبقى مفتوحة بشكل دائم على خادمك. ‏MySQL 8.4 هي أول إصدار ‏LTS في سلسلة ‏MySQL 8، مع دعم مضمون حتى أبريل 2032. يشرح هذا الدليل التعارضات التقنية الواجب معرفتها، والفحوصات اللازمة قبل التبديل، وإجراء الترقية في المكان على خادم ‏VPS يعمل بـ‏Linux، والحالات التي يكون فيها ‏MariaDB 11.x خياراً أفضل.

المحتويات· لماذا تهاجر الآن: انتهاء الدعم والتعرض للثغرات1/8
  1. 01لماذا تهاجر الآن: انتهاء الدعم والتعرض للثغرات
  2. 02التغييرات الجذرية التي يجب معرفتها قبل الترقية
  3. 03المتطلبات الأساسية قبل البدء
  4. 04إجراء هجرة ‏MySQL 8.0 → 8.4 LTS على خادم VPS
  5. 05MariaDB 11.x: متى تُفضّل هذا البديل
  6. 06MySQL 8.0 مقابل MySQL 8.4 LTS مقابل MariaDB 11.x
  7. 07استكشاف الأخطاء: الأخطاء الشائعة بعد الهجرة
  8. 08الانتقال إلى MySQL 8.4 LTS: ما يجب تذكره

لماذا تهاجر الآن: انتهاء الدعم والتعرض للثغرات

‏MySQL 8.0 وصل إلى نهاية دعمه الرسمي في 30 أبريل 2026 وفق جدول ‏Oracle Lifetime Support‏ (oracle.com/support/lifetime-support/). من هذا التاريخ، لم تعد ‏Oracle تنشر تصحيحات أمنية للفرع 8.0.x، بصرف النظر عن خطورة الثغرة. الخوادم التي تبقى على 8.0 تتراكم لديها ديون أمنية تنمو مع كل تحديث ربعي من ‏Oracle — دون أن تُعالج أبداً.

‏MySQL 8.4 هي أول إصدار يُعيَّن كـ‏LTS في تاريخ ‏MySQL. تضمن ‏Oracle دعمه حتى أبريل 2032 (dev.mysql.com/doc/relnotes/mysql/8.4/). على عكس فروع الابتكار 8.1 و8.2 و8.3 — الصادرة بين 2023 و2024 دون دعم ممتد — يتلقى الإصدار 8.4 تصحيحات أمنية وإصلاحات الاستقرار على المدى الطويل.

التغييرات الجذرية التي يجب معرفتها قبل الترقية

—

  • حذف ‏mysql_native_password‏: تمت إزالة هذا المكوّن الإضافي للمصادقة نهائياً في ‏MySQL 8.4 (كان مُهملاً فقط في 8.0). أي حساب مستخدم يعتمد على هذا المكوّن سيفشل في الاتصال فوراً بعد الترقية. تطبيقات ‏PHP الأقدم من 8.1، و‏WordPress دون تهيئة ‏PDO صحيحة، وعملاء ‏JDBC القديمة هي الحالات الأكثر شيوعاً.
  • تغيير المعامل ‏authentication_policy‏: أصبحت القيمة الافتراضية ‏caching_sha2_password‏، ويُتجاهل أي سطر ‏default_authentication_plugin‏ في ‏my.cnf‏ مع تحذير. يجب استبداله بـ‏authentication_policy‏.
  • إزالة ‏innodb_file_format‏ والخيارات المرتبطة: حذف هذا المتغير. الجداول المنشأة بـ‏ROW_FORMAT=COMPRESSED‏ تعمل، لكن أي محاولة لتعيين ‏innodb_file_format‏ تنتج خطأ. تحقق من سكريبتات ‏DDL‏.
  • تغييرات نوع ‏JSON‏: يُعزز ‏MySQL 8.4 توافق ‏JSON/SQL‏. دوال مثل ‏JSON_TABLE()‏ و‏JSON_VALUE()‏ قد تتصرف بشكل مختلف. تحقق من الجداول التي تحتوي على أعمدة ‏JSON‏ كبيرة في بيئة اختبار أولاً.
  • مجموعة الأحرف والترتيب: تبقى ‏utf8mb4‏ و‏utf8mb4_0900_ai_ci‏ افتراضيتين، لكن ‏MySQL 8.4 ترفض بشكل أكثر صرامة الأعمدة المُعلنة بـ‏utf8‏ (اسم مستعار لـ‏utf8mb3‏). قد تكون هجرة الترتيب ضرورية لقواعد البيانات القديمة المنشأة تحت ‏MySQL 5.7.
  • متغيرات النظام المُزالة أو المُعاد تسميتها: إزالة عدة متغيرات كانت مُهملة في 8.0 — خاصة ‏innodb_undo_tablespaces‏ و‏slave_*‏ (استُبدلت بـ‏replica_*‏ ) و‏query_cache_*‏.
  • النسخ المتطابق: أسماء المتغيرات المرتبطة بالنسخ المتطابق تحولت نهائياً إلى مصطلح ‏source‏/‏replica‏. أي سكريبت يستدعي ‏SHOW SLAVE STATUS‏ يجب تحديثه إلى ‏SHOW REPLICA STATUS‏.

المتطلبات الأساسية قبل البدء

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

  • نسخة احتياطية كاملة ومُتحقق منها: نفّذ ‏mysqldump --all-databases --single-transaction --routines --events > backup_pre_migration.sql‏ وتحقق أن الملف قابل للقراءة. نسخة احتياطية غير مُتحقق منها ليست نسخة احتياطية.
  • الإصدار الحالي ومحركات الجداول: نفّذ ‏SELECT VERSION();‏ وأدرج الجداول غير المستندة إلى ‏InnoDB‏ من ‏information_schema.tables‏. يجب تقييم أي جدول ‏MyISAM‏ أو ‏MEMORY‏ قبل الترقية.
  • توافق التطبيق: حدّد مكوّن المصادقة لكل حساب بـ‏SELECT user, host, plugin FROM mysql.user;‏. أي مستخدم على ‏mysql_native_password‏ يجب ترحيله إلى ‏caching_sha2_password‏.
  • المساحة المتاحة على القرص: قد تضاعف الترقية مؤقتاً المساحة التي تشغلها ملفات ‏ibdata‏. تحقق من وجود 20% على الأقل من المساحة الحرة على قسم ‏/var‏.

إجراء هجرة ‏MySQL 8.0 → 8.4 LTS على خادم VPS

  1. نسخة احتياطية كاملة مع التحقق

    نفّذ ‏mysqldump --all-databases --single-transaction --routines --events --triggers > /root/backup_mysql80_$(date +%Y%m%d).sql‏. تحقق من نهاية الملف بـ‏tail -5 /root/backup_mysql80_*.sql‏: يجب أن يكون آخر سطر ‏-- Dump completed on …‏. احفظ الملف خارج الخادم قبل المتابعة.

  2. مراجعة الحسابات ومكوّنات المصادقة

    نفّذ ‏SELECT user, host, plugin FROM mysql.user ORDER BY plugin;‏. لكل مستخدم على ‏mysql_native_password‏، نفّذ ‏ALTER USER 'اسم'@'مضيف' IDENTIFIED WITH caching_sha2_password BY 'كلمة_مرور';‏. حدّث سلسلة الاتصال لكل تطبيق متأثر قبل الترقية.

  3. التحقق من المتغيرات المُهملة في my.cnf

    افتح ‏/etc/mysql/mysql.conf.d/mysqld.cnf‏ وأزل أو استبدل: ‏default_authentication_plugin‏ بـ‏authentication_policy = caching_sha2_password‏، و‏slave_*‏ بـ‏replica_*‏، وأزل ‏innodb_undo_tablespaces‏ و‏query_cache_size‏ و‏query_cache_type‏. أي متغير غير معروف يمنع تشغيل ‏MySQL 8.4.

  4. إيقاف الخدمة وأخذ لقطة

    على خادم ‏Proxmox‏ أو ‏KVM‏، خذ لقطة قبل تعديل الحزم عبر لوحة التحكم أو ‏API‏ لمزود الاستضافة. ثم: ‏systemctl stop mysql‏ وتحقق من التوقف بـ‏systemctl status mysql‏.

  5. إضافة مستودع MySQL 8.4 وتحديث الحزم

    على ‏Debian 12 / Ubuntu 22.04‏: نزّل حزمة إعداد مستودع ‏MySQL‏ من ‏dev.mysql.com/downloads/repo/apt/‏، ثبّتها بـ‏dpkg -i mysql-apt-config_*.deb‏، اختر ‏MySQL 8.4 LTS‏ من القائمة، ثم نفّذ ‏apt-get update && apt-get install mysql-server‏.

  6. ترقية جداول النظام

    عند أول تشغيل لـ‏MySQL 8.4‏، يُحدّث المحرك جداول النظام تلقائياً. تحقق من السجلات: ‏journalctl -u mysql -n 50 | grep -i 'upgrade\|error'‏. إذا لم تتم الترقية التلقائية، نفّذ ‏mysql_upgrade --user=root --password‏.

  7. التحقق بعد الترقية

    اتصل وتحقق من الإصدار: ‏SELECT VERSION();‏ يجب أن يُرجع ‏8.4.x‏. ثم نفّذ ‏mysqlcheck --all-databases --auto-repair --user=root --password‏ للكشف عن أي تلف في الجداول. راجع سجل الأخطاء ‏/var/log/mysql/error.log‏.

  8. اختبار وظيفي للتطبيق

    أعد تشغيل التطبيق وتحقق من النقاط الحساسة: الاتصال بقاعدة البيانات، مصادقة المستخدمين، استعلامات أعمدة ‏JSON‏، الإجراءات المخزنة. الخطأ ‏The server requested authentication method unknown to the client‏ يعني وجود حساب لا يزال على ‏mysql_native_password‏.

  9. التنظيف وتفعيل المراقبة

    احذف ملف النسخة الاحتياطية المحلية بعد تأكيد النسخة الخارجية. تحقق من أداة المراقبة: بعض أسماء المقاييس تغيرت بين 8.0 و8.4. جدوِل فحص سجل الأخطاء بعد 24 و72 ساعة من الهجرة.

MariaDB 11.x: متى تُفضّل هذا البديل

‏MariaDB 11.x هو شوكة من ‏MySQL تباعدت بشكل كبير منذ الإصدار 10.3. هناك حالات محددة تجعل ‏MariaDB 11.x أكثر ملاءمة من الترقية إلى ‏MySQL 8.4.

فضّل ‏MariaDB 11.x إذا كان تطبيقك يستخدم ميزات خاصة بـ‏MariaDB‏ (جداول ذات إصدار نظام، تسلسلات، محرك ‏Spider‏، ‏Galera Cluster‏ الأصلي)؛ أو إذا كنت بحاجة إلى مجموعة متعددة الماسترات دون تعقيد ‏MySQL Group Replication‏؛ أو إذا أردت البقاء على شوكة تحتفظ بـ‏mysql_native_password‏ للتطبيقات القديمة. ‏MariaDB 11.4 LTS مدعومة حتى 2029.

فضّل ‏MySQL 8.4 LTS إذا طُوِّر تطبيقك واختُبر خصيصاً مقابل ‏MySQL (أطر عمل مثل ‏Laravel Eloquent أو ‏Hibernate التي تستغل ميزات ‏MySQL الخاصة)؛ أو إذا كنت تستخدم ‏MySQL Enterprise لوظائف كـ‏audit plugin أو ‏Thread Pool التجاري؛ أو إذا كان مزود الاستضافة لا يدعم إلا النسخ الاحتياطية المحسّنة لـ‏MySQL (Percona XtraBackup). أما الهجرة من ‏MySQL 8.0 إلى ‏MariaDB 11.x فهي هجرة بين محركَّين مختلفَّين، وأكثر خطورة وخارج نطاق هذا الدليل — فهي تستحق إجراءً مخصصاً مع اختبارات تكامل كاملة.

التراجع ممكن خلال 24 ساعة: إذا أخذت لقطة للخادم قبل الترقية، فإن استعادتها تُعيد الخادم إلى حالة ‏MySQL 8.0 في دقائق. بدون لقطة، يمكن التراجع من تفريغ ‏SQL‏ لكنه أبطأ. لا تحذف النسخة الاحتياطية واللقطة إلا بعد 72 ساعة من الاستقرار في الإنتاج على ‏MySQL 8.4.

MySQL 8.0 مقابل MySQL 8.4 LTS مقابل MariaDB 11.x

مرّر الجدول أفقيًا

المعيارMySQL 8.0MySQL 8.4 LTSMariaDB 11.x
دعم الأمانمنتهٍ (30 أبريل 2026)حتى أبريل 2032حتى 2029 (11.4 LTS)
mysql_native_passwordموجود (مُهمل)محذوفموجود بشكل افتراضي
مجموعة متعددة الماستراتGroup ReplicationGroup ReplicationGalera Cluster أصلي
توافق تطبيقات MySQLأصليأصليمعظمه متوافق، بعض الفجوات
الترخيصGPL + Enterprise تجاريGPL + Enterprise تجاريLGPL (مؤسسة MariaDB)

استكشاف الأخطاء: الأخطاء الشائعة بعد الهجرة

—

  • ERROR 1045 (28000): Access denied‏ بعد الترقية: تحقق من مكوّن المصادقة بـ‏SELECT plugin FROM mysql.user WHERE user='اسم';‏. إذا كان لا يزال ‏mysql_native_password‏، نفّذ ‏ALTER USER … IDENTIFIED WITH caching_sha2_password BY '…';‏.
  • Unknown system variable 'default_authentication_plugin'‏: هذا المتغير لم يعد مُعترفاً به في 8.4. أزله من ‏my.cnf‏ واستبدله بـ‏authentication_policy = caching_sha2_password‏.
  • ‏MySQL لا يبدأ بعد الترقية: راجع ‏/var/log/mysql/error.log‏. الأكثر شيوعاً هو متغير نظام غير معروف في ‏my.cnf‏. علّق المتغيرات واحداً تلو الآخر حتى تحدد المصدر.
  • تدهور الأداء في استعلامات الفرز: يُطبّق ‏MySQL 8.4 ترتيب الفهرس بصرامة أكبر. نفّذ ‏EXPLAIN‏ على الاستعلامات البطيئة. ‏ANALYZE TABLE اسم_الجدول;‏ يُجبر على تحديث الإحصائيات.
  • جدول ‏performance_schema.replication_applier_status‏ غير موجود في سكريبتات المراقبة: بعض جداول ‏performance_schema‏ أُعيد تسميتها. حدّث استعلامات المراقبة وفق الأسماء الجديدة الموثّقة في ‏dev.mysql.com/doc/refman/8.4/en/performance-schema.html‏.

الانتقال إلى MySQL 8.4 LTS: ما يجب تذكره

هجرة ‏MySQL 8.0 إلى ‏MySQL 8.4 LTS هي ترقية في المكان قابلة للتنفيذ في أقل من ساعة على خادم ‏VPS مُحضَّر جيداً. أكثر نقطتي فشل شيوعاً هما حذف ‏mysql_native_password‏ — الذي يُعطّل اتصالات التطبيقات القديمة إذا لم تُهاجَر الحسابات مسبقاً — والمتغيرات المُزالة في ‏my.cnf‏ التي تمنع بدء الخدمة. تدقيق هاتين النقطتين مسبقاً يُقلل من وقت التوقف إلى أقل من خمس دقائق. والمكسب الجوهري: ‏MySQL 8.4 LTS مدعوم حتى أبريل 2032 — ست سنوات من تصحيحات الأمان المضمونة دون الحاجة إلى ترقية أخرى طوال عمر الإصدار.

خادم VPS Linux لقاعدة بيانات MySQL 8.4

استضف ‏MySQL 8.4 LTS على خادم ‏VPS Linux مُدار، مع لقطات مدمجة لتأمين كل هجرة.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة