ترقية ماي إس كيو إل 5.7 إلى 8.0 على سينت أو إس / ريد هات

upgrade mysql version 5.7 to 8update

إن ترقية الإصدارات الرئيسية لـ MySQL يمكن أن تكون عملية معقدة بسبب مشاكل التوافق المحتملة والتغييرات في الإعدادات بين الإصدارات. في هذا الدليل ، سنتناول العملية الكاملة للترقية من MySQL 5.7 إلى 8.0 على خوادم CentOS/RHEL 7/8.

الخطوات الرئيسية التي سنغطيها هي:

  • الاستعداد للترقية عن طريق نسخ البيانات الاحتياطي والتحقق من صحة الإعدادات
  • تثبيت مستودعات MySQL 8.0 الجديدة
  • إيقاف تشغيل وإزالة حزم MySQL 5.7 القديمة
  • تثبيت حزم MySQL 8.0 الجديدة
  • بدء تشغيل MySQL 8.0 وتشغيل خطوات ما بعد التثبيت
  • التحقق من صحة الترقية وإجراء أي تغييرات ضرورية في الإعدادات

اتباع هذه العملية سيساعد في ضمان ترقية سلسة وناجحة إلى MySQL 8.0.

المتطلبات الأساسية

قبل البدء في عملية الترقية ، تأكد من توفر النظام على المتطلبات الأساسية التالية:

  • نظام التشغيل CentOS/RHEL 7 أو 8
  • تثبيت MySQL 5.7 الموجود مسبقًا من مستودعات CentOS/RHEL الافتراضية
  • تم نسخ كل البيانات المهمة لـ MySQL الاحتياطي
  • لديك نافذة صيانة لأخذ MySQL خارج الخدمة أثناء الترقية
  • لديك امتيازات الجذر أو sudo على الخادم لتثبيت البرامج

الخطوة 1 – النسخ الاحتياطي والاستعداد

لتجنب أي فقدان للبيانات ، من الضروري جدًا عمل نسخ احتياطي قبل بدء عملية الترقية. فيما يلي الخطوات الرئيسية للنسخ الاحتياطي:

النسخ الاحتياطي لبيانات MySQL

استخدم mysqldump لإنشاء نسخ احتياطية منطقية لكل قواعد البيانات:

$ mysqldump --all-databases --routines --events > mysql_backup.sql

قم بتخزين ملف النسخ الاحتياطي هذا في موقع آمن خارج الخادم.

يمكنك أيضًا أخذ نسخ احتياطية ثنائية مثل لقطات النظام الملفي أو لقطات LVM كحماية إضافية.

مراجعة ونسخ الإعدادات الاحتياطية

الملفات الرئيسية لإعدادات MySQL التي قد تحتاج إلى تحديثات بعد الترقية هي:

  • /etc/my.cnf – ملف إعداد MySQL الرئيسي
  • /etc/my.cnf.d/ – يحتوي على مقاطع إعداد تتجاوز my.cnf
  • /var/lib/mysql/ – يحتوي على ملفات قاعدة البيانات

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

بعد الترقية ، سنحتاج إلى دمج أي إعدادات مخصصة مطلوبة مرة أخرى في الملفات الجديدة.

تسجيل كل مستخدمي MySQL

قد تؤثر الترقية بشكل محتمل على حسابات المستخدمين والأذونات. قم بالتقاط قائمة بجميع المستخدمين الحاليين بتشغيل:

mysql> SELECT User, Host FROM mysql.user; 

سيتيح لك ذلك إعادة إنشاء أو إصلاح أي مستخدمين إذا لزم الأمر بعد الترقية.

اختبر وتحقق من صحة النسخ (إن تم استخدامه)

إذا تم استخدام نسخ MySQL ، تأكد من أن النسخ صحي وجميع الخوادم متزامنة تمامًا قبل بدء الترقية.

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

الخطوة 2 – تثبيت مستودعات MySQL 8.0

الآن أصبحنا على استعداد لإعداد مستودعات MySQL 8.0 الجديدة. سيتيح لنا ذلك تثبيت أحدث إصدارات MySQL 8.0 باستخدام yum.

أولاً قم بتثبيت مفتاح GPG لـ MySQL:

$ rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023  

يتيح ذلك التحقق من حزم RPM من MySQL.

ثم قم بتثبيت حزمة مستودع المجتمع MySQL:

$ yum install https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm

سيقوم ذلك بإعداد تكوين مستودع yum لـ MySQL 8.0.

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

$ yum makecache

الآن يمكن لنظام CentOS/RHEL الخاص بك تثبيت MySQL 8.0.

الخطوة 3 – إيقاف تشغيل MySQL 5.7 وإزالة الحزم

الآن نحتاج إلى إيقاف تشغيل MySQL 5.7 بشكل صحيح وإزالة ملفات الحزم القديمة.

إيقاف خدمة MySQL

أوقف خدمة MySQL:

$ systemctl stop mysqld.service

تحقق من إيقافها بشكل صحيح:

$ systemctl status mysqld.service

إزالة حزم MySQL القديمة

ثم استخدم yum لإزالة حزم MySQL 5.7 فقط:

$ yum remove mysql-community-client-5.7* mysql-community-common-5.7* mysql-community-libs-5.7* mysql-community-server-5.7*

سيترك ذلك ملفات الإعدادات في مكانها ، والتي سنقوم بتنظيفها لاحقًا.

الخطوة 4 – تثبيت MySQL 8.0

بعد إزالة الإصدار القديم ، يمكننا الآن تثبيت MySQL 8.0:

$ yum install mysql-community-server

سيقوم ذلك بجلب أحدث خادم MySQL 8.0 ، والعميل ، والمكتبات الشائعة ، والأدوات.

عند الانتهاء من التثبيت ، يكون MySQL 8.0 موجودًا الآن ولكن لم يتم تكوينه بالكامل بعد.

الخطوة 5 – بدء تشغيل MySQL 8.0 وتشغيل mysql_upgrade

الخطوات التالية هي بدء تشغيل MySQL 8.0 وتشغيل mysql_upgrade لإجراء أي تغييرات مطلوبة للإصدار الجديد.

بدء تشغيل MySQL

قم ببدء خدمة MySQL 8.0 الجديدة:

$ systemctl start mysqld.service

تحقق من بدء التشغيل بنجاح:

$ systemctl status mysqld.service

يجب أن تكون الخدمة قيد التشغيل ويمكنك الآن الاتصال بها محليًا.

تشغيل mysql_upgrade

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

قم بالاتصال بـ MySQL وتشغيله:

$ mysql_upgrade -u root -p

أدخل كلمة مرور الجذر عند المطالبة بذلك. سيقوم ذلك بتشغيل أي تحديثات مطلوبة لبياناتك لتكون متوافقة مع 8.0.

عند الانتهاء ، قم بتشغيل هذا للتحقق من تحديث قاموس البيانات:

mysql> SHOW VARIABLES LIKE 'dd_version';  

يجب أن يظهر قيمة مثل ‘2’ لـ MySQL 8.0.

مراجعة ملف سجل الأخطاء

تحقق من سجل أخطاء MySQL الأخير عند /var/log/mysqld.log لأي مشاكل تم الإبلاغ عنها أثناء بدء التشغيل أو mysql_upgrade.

حل أي أخطاء قبل المتابعة.

في هذه المرحلة ، يجب أن يكون MySQL 8.0 يعمل بنجاح.

الخطوة 6 – تحديث ملفات الإعدادات

الآن نحتاج إلى تحديث أي ملفات وإعدادات تكوين لـ MySQL 8.0.

تحديث my.cnf

من المرجح أن يكون ملف my.cnf الرئيسي قديم ويفتقر إلى خيارات محددة لـ 8.0.

أنشئ إصدارًا افتراضيًا جديدًا:

$ mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql

سيولد ذلك ملف my.cnf جديد تحت /var/lib/mysql بإعدادات الافتراضية لـ 8.0.

انسخه إلى /etc مع استبدال الملف القديم:

$ cp /var/lib/mysql/my.cnf /etc/my.cnf

افتح هذا الملف /etc/my.cnf الجديد وقم بإعادة تطبيق أي إعدادات مخصصة كانت لديك مسبقًا، مثل:

  • إعدادات الذاكرة والمحرك المخصصة
  • إعدادات النسخ
  • أي تخصيصات أخرى

احفظ الملف بعد الانتهاء.

تحديث إعدادات App Armor

إذا تم استخدام أمان AppArmor ، فهو بحاجة إلى إعدادات محدثة لـ MySQL 8.0:

$ aa-disable /etc/apparmor.d/usr.sbin.mysqld 

ثم قم بتحديثه:

$ echo "alias /etc/apparmor.d/usr.sbin.mysqld -> /etc/apparmor.d/disable/" | tee -a /etc/apparmor.d/usr.sbin.mysqld

سيقوم ذلك بتعطيل قواعد AppArmor القديمة وسيستخدم القيم الافتراضية.

إعادة تشغيل MySQL والتحقق من التكوين

أعد تشغيل MySQL لتحميل إعدادات my.cnf الجديدة:

$ systemctl restart mysqld.service

تحقق من تطبيق الإعدادات المخصصة بشكل صحيح:

mysql> SHOW VARIABLES; 

تحقق من أن ذاكرتك ومحرك التخزين وإعدادات أخرى كما تتوقع.

تحقق أيضًا من:

mysql> SELECT @@global.innodb_default_row_format;

يظهر ‘dynamic’ وهو مطلوب لـ MySQL 8.0.

قم بضبط my.cnf أكثر إذا لم تطبق أي إعدادات بشكل صحيح.

الخطوة 7 – إنشاء حسابات مستخدم جديدة

إذا كان لديك أي حسابات مستخدم مخصصة في MySQL 5.7 ، فستحتاج إلى إعادة إنشائها في 8.0.

تحقق من قائمة المستخدمين التي التقطتها مسبقًا ، وأعد إنشاء كل حساب باستخدام بناء جديد لـ CREATE USER:

# إنشاء مستخدم التطبيق  
mysql> CREATE USER 'myapp'@'localhost' IDENTIFIED BY 'password';
# منح الأذونات
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON myapp.* TO 'myapp'@'localhost'; 

جرب الاتصال بكل مستخدم تم إعادة إنشائه للتحقق من عمل الأذونات.

قد ترغب أيضًا في إجبار انتهاء صلاحية كلمة المرور باستخدام:

mysql> ALTER USER 'user'@'host' PASSWORD EXPIRE;

سيتطلب ذلك من المستخدمين إعادة تعيين كلمات المرور في أول تسجيل دخول.

الخطوة 8 – تنظيف التثبيت القديم

بمجرد اكتمال الترقية ، يمكننا إزالة أي بقايا متبقية من تثبيت MySQL 5.7 القديم:

إزالة ملفات السجل

امسح ملفات السجل القديمة من 5.7:

$ rm /var/log/mysqld.log*

إزالة ملفات الإعدادات

قم بإزالة أي ملفات إعداد قديمة غير مستخدمة من 5.7:

$ rm /etc/my.cnf.d/*mysql57*

إزالة دلائل البيانات

إذا لم يتم إعادة استخدام دلائل البيانات الموجودة ، قم بإزالة دليل بيانات 5.7:

$ rm -rf /var/lib/mysql57

سيساعد ذلك على القضاء على أي لبس بشأن وجود عدة دلائل بيانات.

إعادة تشغيل ومراقبة MySQL

أعد تشغيل MySQL مرة أخيرة:

$ systemctl restart mysqld.service

راقب السجلات والأداء لبعض الوقت لضمان السلوك المستقر.

الآن تم الانتهاء تمامًا من الترقية إلى 8.0!

خلاصة

تنطوي عملية الترقية من MySQL 5.7 إلى 8.0 على تخطيط وإعداد دقيقين واختبار. الخطوات الرئيسية هي:

  • النسخ الاحتياطي لكل البيانات والتحقق من صحة التثبيت الحالي
  • تثبيت مستودعات MySQL 8.0 الجديدة
  • إيقاف وإزالة حزم 5.7 القديمة
  • تثبيت إصدارات MySQL 8.0
  • تشغيل mysql_upgrade لتحديث قواعد بيانات النظام
  • تحديث ملفات التكوين مثل my.cnf
  • إعادة إنشاء حسابات المستخدمين وإعادة تشغيل الاختبارات
  • تنظيف بقايا التثبيت والسجلات القديمة

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

تم الآن ترقية البنية التحتية لـ MySQL الخاصة بك مع أحدث الميزات والتحسينات في MySQL 8.0!

LEAVE A COMMENT