خطای InnoDB Waiting for background threads چیست؟
خطای InnoDB: Waiting for the background threads to start هنگام استارت MySQL/MariaDB در لاگها ثبت میشود. این خطا نشاندهنده مشکل در راهاندازی موتور InnoDB است و معمولاً باعث میشود MySQL بهدرستی استارت نشود یا بسیار کند عمل کند.
دلایل
خرابی فایلهای InnoDB (ibdata1، ib_logfile0، ib_logfile1)، کمبود RAM سرور برای تخصیص innodb_buffer_pool_size، قطع ناگهانی برق یا کرش سرور، و تنظیمات نادرست InnoDB در my.cnf از دلایل اصلی هستند.
روشهای رفع
روش ۱: بررسی لاگ خطا
tail -100 /var/log/mysqld.log
tail -100 /var/lib/mysql/$(hostname).err
روش ۲: تنظیم innodb_force_recovery
اگر MySQL استارت نمیشود، با حالت recovery اجرا کنید:
nano /etc/my.cnf
در بخش [mysqld] اضافه کنید:
innodb_force_recovery = 1
MySQL را استارت کنید. اگر کار نکرد، مقدار را به ۲، ۳ و حداکثر ۶ افزایش دهید. هر عدد سطح بالاتری از recovery را فعال میکند.
systemctl start mysqld
مهم: پس از بازیابی، فوراً از دیتابیسها بکاپ بگیرید و سپس این خط را حذف کنید.
روش ۳: حذف و بازسازی لاگ فایلهای InnoDB
systemctl stop mysqld
mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak
mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bak
systemctl start mysqld
MySQL فایلهای لاگ جدید ایجاد میکند.
روش ۴: کاهش innodb_buffer_pool_size
اگر RAM سرور کم است:
innodb_buffer_pool_size = 128M
پیشگیری
بکاپ منظم دیتابیس، استفاده از UPS، مانیتورینگ فضای دیسک و RAM. اگر سرور مجازی با RAM بیشتر نیاز دارید، سرور مجازی اروپا میهن هاستینگ گزینه مناسبی است. خدمات کانفیگ سرور شامل بهینهسازی MySQL و InnoDB نیز میشود.