Action disabled: source

در این مستند به روش شناخت room for improvement ها و tune کردن mysql می‌پردازم. به این ترتیب ابتدا باید موارد قابل بهبود را شناسایی کنید و بعد برای هر کدام از راهکار متناظرش برای tunning استفاده کنید. شناخت مشکل گام مهمیست زیرا تنظیمات مناسب برای mysql شدیدا به میزان و نوع استفاده از resource سرور وابسته است و ممکن است مورد به مورد تنظیم مناسب آن فرق کند.

شناخت مشکل از طریق mysqltuner

۱. ابتدا فایل tunner را دانلود کنید:

wget 'https://raw.github.com/major/MySQLTuner-perl/master/mysqltuner.pl' --quiet --no-check-certificate --output-document='/usr/local/bin/mysqltuner'

۲. پرمیژن اجرا بدهید:

chmod +x /usr/local/bin/mysqltuner

۳. با این دستور می‌توانید بخشی از بهبودهای قابل انجام را ببینید:

command mysqltuner

دستور بالا یوزرنیم، پسورد و آی‌پی mysql را ندارد. اگر اطلاعات فوق را به آن بدهید می‌تواند به mysql متصل شود و موارد بیشتری را نشان دهد. برای این منظور دستور زیر را بزنید:

command mysqltuner --host localhost --user root --password  --forcemem 5800000

در دستور بالا باید root را با یوزرنیم کاربر ریشه و عدد جلوی forcemem را با مقدار ram موجود روی سرور جایگزین کنید. برای اطلاع از مقدار رم موجود رو سرور دستور زیر را وارد کنید:

free -m

بعد پسورد از شما خواسته می‌شود. وارد کنید. خروجی اجرای این دستور بخش قابل توجهی از ضعف‌های امنیتی و پرفرمنس و … را به علاوهٔ راهکار پیشنهادی به شما نشان می‌دهد.

غیرفعال کردن InnoDB

در اینجا به یکی از مواردی که به من اخطار داد و راه‌حل آن می‌پردازم. برای من در بخش storage engine نوشته:

[!!] InnoDB is enabled but isn't being used

و در آخر در بخش راه‌حل‌ها پیشنهاد کرده:

Add skip-innodb to MySQL configuration to disable InnoDB

برای اطمینان از صحت موضوع به mysql لاگین کنید:

mysql -u root -p

پسورد root از شما خواسته می‌شود. سپس در شل mysql دستور زیر را وارد کنید:

mysql> SHOW ENGINES;

من در خط آخر جدول فوق innodb را مشاهده کردم:

| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |

در اینجا innodb را غیرفعال می‌کنیم و بعد همین مسیر را تکرار کنیم تا از غیرفعال شدن آن اطمینان حاصل کنیم. برای این منظور از ورژن mysql نصب روی سرور اطمینان حاصل کنید:

mysqld -V

فایل my.cnf را باز کنید:

nano /etc/mysql/my.cnf

جایی که بلاک [mysqld] باز شده را پیدا کنید و در داخل بلاک مربوط به آن این را اضافه کنید:

skip-innodb
default-storage-engine = myisam

ریست کنید:

service mysql restart

از اعمال درست تنظیمات اطمینان حاصل کنید.