MariaDB خدمة دليل استكشاف الأخطاء وإصلاحها
MariaDB هو نظام إدارة قواعد بيانات علائقية مفتوح المصدر، ويستخدم على نطاق واسع في مجموعة متنوعة من التطبيقات. على الرغم من أن MariaDB يعمل عادةً بشكل مستقر، فقد تواجه في بعض الأحيان فشلًا في الخدمة أو مشكلات في الأداء. ستقدم هذه المقالة دليلاً تفصيليًا حول كيفية استكشاف أخطاء خدمة MariaDB في ServBay، بما في ذلك المشاكل الشائعة، وخطوات التشخيص، والحلول. يتم تشغيل ServBay على نظام macOS ويتضمن إصدارات مختلفة من MariaDB، لذا في بعض الأوامر، يجب تحديد ملفات التكوين والدلائل الخاصة بكل إصدار.
المشاكل الشائعة وحلولها
1. خدمة MariaDB لا تبدأ
الأسباب المحتملة
- خطأ في ملف التكوين
- المنفذ مشغول
- مشكلة في الأذونات
الحلول
تحقق من ملف التكوين: تأكد من أن ملف التكوين
my.cnf
صحيح، والمسار هو:bash/Applications/ServBay/etc/mariadb/11.3/my.cnf
1استخدم الأمر التالي للتحقق من صحة ملف التكوين:
bashmysqld --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf --validate-config
1تحقق من شغل المنفذ: تأكد من أن منفذ MariaDB المستخدم (الافتراضي هو 3306) غير مشغول بواسطة عملية أخرى. استخدم الأمر التالي للتحقق من شغل المنفذ:
bashlsof -i :3306
1تحقق من الأذونات: تأكد من أن أذونات دليل بيانات MariaDB وملف التكوين صحيحة. استخدم الأوامر التالية للتحقق من الأذونات:
bashls -l /Applications/ServBay/db/mariadb/11.3 ls -l /Applications/ServBay/etc/mariadb/11.3/my.cnf
1
2بدء الخدمة: حاول إعادة تشغيل خدمة MariaDB:
bashservbayctl restart mariadb 11.3
1
2. لا يمكن الاتصال بـ MariaDB
الأسباب المحتملة
- خدمة MariaDB غير متشغلة
- الجدار الناري يمنع الاتصال
- مشكلة في أذونات المستخدم
الحلول
تحقق من حالة الخدمة: تأكد من أن خدمة MariaDB مشغلة:
bashservbayctl status mariadb 11.3
1تحقق من إعدادات الجدار الناري: تأكد من أن الجدار الناري يسمح بمرور الاتصال عبر منفذ MariaDB (الافتراضي هو 3306):
bashsudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/mysqld sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/mysqld
1
2تحقق من أذونات المستخدم: تأكد من أن المستخدم لديه الأذونات الكافية للاتصال بقاعدة البيانات:
sqlSHOW GRANTS FOR 'your_username'@'localhost';
1اختبار الاتصال: استخدم الأمر التالي لاختبار الاتصال:
bashmysql --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p -h localhost -P 3306
1
3. مشاكل الأداء
الأسباب المحتملة
- استعلامات غير محسنة
- إعداد الكاش بشكل غير مناسب
- نقص الفهارس
الحلول
تحسين الاستعلامات: استخدم
EXPLAIN
لتحليل أداء الاستعلامات والقيام بالتحسينات اللازمة:sqlEXPLAIN SELECT * FROM your_table_name WHERE column_name = 'value';
1تعديل إعدادات الكاش: قم بتعديل إعدادات الكاش في
my.cnf
، مثلاً:[mysqld] query_cache_size = 64M innodb_buffer_pool_size = 1G
1
2
3إنشاء الفهارس: تأكد من أن الأعمدة التي تستخدم بشكل متكرر في الاستعلامات لديها فهارس:
sqlCREATE INDEX idx_column_name ON your_table_name(column_name);
1
4. انهيار قاعدة البيانات
الأسباب المحتملة
- عطل في الأجهزة
- تعارض في البرمجيات
- خطأ في التكوين
الحلول
تحقق من سجل الأخطاء: قم بمراجعة سجل أخطاء MariaDB لتحديد السبب الدقيق للانهيار. يقع سجل الأخطاء في:
bash/Applications/ServBay/logs/mariadb/11.3.err
1إصلاح قاعدة البيانات: استخدم أداة
mysqlcheck
لإصلاح قاعدة البيانات:bashmysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p --auto-repair --all-databases
1استعادة البيانات: إذا كانت ملفات قاعدة البيانات تالفة، يمكن استعادتها من النسخ الاحتياطية. يقع مسار ملفات النسخ الاحتياطية في:
bash/Applications/ServBay/backup/mariadb/11.3
1
5. مشاكل النسخ الاحتياطي والاستعادة
الأسباب المحتملة
- تلف ملف النسخ الاحتياطي
- خطأ في أوامر الاستعادة
الحلول
تحقق من ملف النسخ الاحتياطي: تأكد من أن ملف النسخ الاحتياطي كامل وغير تالف. استخدم الأمر التالي للتحقق من حجم ملف النسخ الاحتياطي وسلامته:
bashls -lh /Applications/ServBay/backup/mariadb/11.3/your_backup.sql
1استعادة قاعدة البيانات بشكل صحيح: استخدم أداة
mysql
لاستعادة قاعدة البيانات:bashmysql --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p your_database < /Applications/ServBay/backup/mariadb/11.3/your_backup.sql
1
مشكلة خاصة: ib_logfile0 was not found
و InnoDB: Missing FILE_CHECKPOINT(47594) at 47594
الأسباب المحتملة
- خطأ في الإصدار 11.5.1 من MariaDB
سجل الأخطاء
240618 22:37:46 mysqld_safe Starting mariadbd daemon with databases from /Applications/ServBay/db/mariadb/11.5
2024-06-18 22:37:46 0 [Note] Starting MariaDB 11.5.1-MariaDB-log source revision 65079ece42f383bdeb9b3f913a833a6f0123919d as process 3323
2024-06-18 22:37:46 0 [Warning] Setting lower_case_table_names=2 because file system for /Applications/ServBay/db/mariadb/11.5/ is case insensitive
2024-06-18 22:37:47 0 [Warning] --innodb-file-per-table is deprecated and will be removed in a future release
2024-06-18 22:37:47 0 [Note] InnoDB: Compressed tables use zlib 1.3.1
2024-06-18 22:37:47 0 [Note] InnoDB: Number of transaction pools: 1
2024-06-18 22:37:47 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-06-18 22:37:47 0 [Note] InnoDB: Initializing buffer pool, total size = 4.000GiB, chunk size = 64.000MiB
2024-06-18 22:37:47 0 [Note] InnoDB: Completed initialization of buffer pool
2024-06-18 22:37:47 0 [ERROR] InnoDB: File /Applications/ServBay/db/mariadb/11.5/ib_logfile0 was not found
2024-06-18 22:37:47 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2024-06-18 22:37:47 0 [Note] InnoDB: Starting shutdown...
2024-06-18 22:37:47 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2024-06-18 22:37:47 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-06-18 22:37:47 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-06-18 22:37:47 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2024-06-18 22:37:47 0 [ERROR] Aborting
240618 22:37:48 mysqld_safe mysqld from pid file /Applications/ServBay/tmp/mariadb-11.5.pid ended
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
240618 23:22:28 mysqld_safe Starting mariadbd daemon with databases from /Applications/ServBay/db/mariadb/11.5
2024-06-18 23:22:28 0 [Note] Starting MariaDB 11.5.1-MariaDB-log source revision 65079ece42f383bdeb9b3f913a833a6f0123919d as process 6667
2024-06-18 23:22:28 0 [Warning] Setting lower_case_table_names=2 because file system for /Applications/ServBay/db/mariadb/11.5/ is case insensitive
2024-06-18 23:22:29 0 [Warning] --innodb-file-per-table is deprecated and will be removed in a future release
2024-06-18 23:22:29 0 [Note] InnoDB: Compressed tables use zlib 1.3.1
2024-06-18 23:22:29 0 [Note] InnoDB: Number of transaction pools: 1
2024-06-18 23:22:29 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-06-18 23:22:29 0 [Note] InnoDB: Initializing buffer pool, total size = 4.000GiB, chunk size = 64.000MiB
2024-06-18 23:22:29 0 [Note] InnoDB: Completed initialization of buffer pool
2024-06-18 23:22:29 0 [ERROR] InnoDB: Missing FILE_CHECKPOINT(47594) at 47594
2024-06-18 23:22:29 0 [ERROR] InnoDB: Log scan aborted at LSN 47594
2024-06-18 23:22:29 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2024-06-18 23:22:29 0 [Note] InnoDB: Starting shutdown...
2024-06-18 23:22:29 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2024-06-18 23:22:29 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-06-18 23:22:29 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-06-18 23:22:29 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2024-06-18 23:22:29 0 [ERROR] Aborting
240618 23:22:29 mysqld_safe mysqld from pid file /Applications/ServBay/tmp/mariadb-11.5.pid ended
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
الحلول
ارجع إلى المقالة تعديل إعدادات MariaDB، وابحث عن my.cnf
، ثم قم بإجراء الخطوات التالية بالتفصيل:
أضف
innodb_force_recovery = 6
في قسم[mysqld]
في ملفmy.cnf
قم بتحرير ملف التكوين
my.cnf
، وابحث عن[mysqld]
، وأضف السطر التالي:iniinnodb_force_recovery = 6
1بدء MariaDB
استخدم الأمر التالي لبدء MariaDB:
bashservbayctl start mariadb 11.5
1نسخ احتياطي لـ MariaDB
استخدم أمر
mysqldump
لعمل نسخ احتياطي لجميع قواعد البيانات:bashmysqldump -uroot -p --all-databases --opt > /Applications/ServBay/backup/mariadb/11.5/mariadb_backup.sql
1تعطيل خدمة MariaDB
في لوحة إدارة ServBay، قم بتعطيل خدمة MariaDB 11.5.
حذف
innodb_force_recovery = 6
منmy.cnf
قم بتحرير ملف التكوين
my.cnf
، واحذف السطر التالي:iniinnodb_force_recovery = 6
1إعادة تسمية دليل
11.5
أعد تسمية دليل بيانات MariaDB
11.5
إلى11.5.bak
:bashmv /Applications/ServBay/db/mariadb/11.5 /Applications/ServBay/db/mariadb/11.5.bak
1استبدال نسخة أخرى من MariaDB
استبدل بـ MariaDB 11.5.0، أو إصدار آخر مثل 11.3 أو 11.4.
استعادة النسخة الاحتياطية لـ MariaDB
استخدم أمر
mysql
لاستعادة قاعدة البيانات:bashmysql -uroot -p < /Applications/ServBay/backup/mariadb/11.5/mariadb_backup.sql
1
الخاتمة
MariaDB هو نظام إدارة قواعد بيانات قوي ومرن، لكن قد تواجه مشكلات متعددة أثناء استخدامه. من خلال هذه المقالة، يمكنك التعرف على كيفية استكشاف أخطاء خدمة MariaDB، بما في ذلك تشخيص المشاكل الشائعة وحلولها. نأمل أن تكون هذه المقالة مفيدة لك، وإذا كان لديك أي استفسارات أو تحتاج إلى مزيد من المساعدة، فلا تتردد في الاتصال بنا.