مدیریت و بهینه‌سازی تنظیمات MySQL در سرور، یکی از حیاتی‌ترین بخش‌های نگهداری و افزایش کارایی اپلیکیشن‌های مبتنی بر دیتابیس است. با کانفیگ مناسب، می‌توانید سرعت پاسخگویی، امنیت و پایداری دیتابیس خود را به ‌طور چشم‌گیری افزایش دهید. در این مقاله، به صورت جامع و عملی با مهم‌ترین تنظیمات و اصول کانفیگ MySQL آشنا خواهید شد. ۱. نصب و راه‌اندازی اولیه MySQL نصب MySQL در بیشتر توزیع‌های لینوکسی، می‌توانید با دستورات زیر MySQL را نصب کنید: sudo apt update sudo apt install mysql-server یا روی CentOS/RHEL: sudo yum install mysql-server پس از نصب، سرویس را راه‌اندازی و فعال کنید: sudo systemctl start mysqld sudo systemctl enable mysqld راه‌اندازی اولیه و تغییر رمز root برای افزایش امنیت اولیه، اجرا کنید: sudo mysql_secure_installation این اسکریپت شما را برای تنظیم پسورد، حذف کاربران بی‌نام و… راهنمایی می‌کند. ۲. آشنایی با فایل کانفیگ MySQL مسیر فایل کانفیگ معمولاً /etc/mysql/my.cnf یا /etc/my.cnf می‌باشد. این فایل شامل تنظیمات حیاتی مانند Bufferها، Cacheها، تنظیمات لاگ و … است. ساختار فایل my.cnf [mysqld] user = mysql port = 3306 datadir = /var/lib/mysql socket = /var/lib/mysql/mysql.sock در هر بخش [section] می‌توانید پارامترهای مربوط به همان سرویس (mysqld یا client و…) را پیکربندی کنید. ۳. بهینه‌سازی عملکرد (Performance Tuning) الف) Memory و Bufferها innodb_buffer_pool_size: برای دیتابیس‌های InnoDB، بهتر است در سرورهای مستقل تا ۷۰٪ کل RAM به این گزینه اختصاص یابد: innodb_buffer_pool_size = 4G query_cache_size (برای نسخه‌های قدیمی‌تر) – در MySQL 8 به بعد حذف شده است: query_cache_type = 1 query_cache_size = 128M tmp_table_size و max_heap_table_size: برای جداول موقت: tmp_table_size = 256M max_heap_table_size = 256M ب) Thread و Connection ها max_connections: حداکثر تعداد اتصال همزمان به دیتابیس. مقدار زیاد ممکن است باعث فشار زیاد به سرور شود. max_connections = 200 thread_cache_size: افزایش این عدد باعث کاهش زمان ایجاد Threadهای جدید می‌شود. thread_cache_size = 32 ج) لاگینگ (Logs) برای بررسی عملکرد و رفع خطاها: slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 این تنظیمات کوئری‌های کندتر از ۲ ثانیه را ثبت می‌کند. ۴. امنیت در سرور MySQL الف) دسترسی کاربران هرگز از user root برای اپلیکیشن‌ها استفاده نکنید. دسترسی کاربران را بر اساس Principle of Least Privilege محدود کنید: GRANT SELECT,INSERT,UPDATE,DELETE ON dbname.* TO 'user'@'localhost' IDENTIFIED BY 'strong_password'; ب) بستن دسترسی ریموت در صورت عدم نیاز در فایل my.cnf: bind-address = 127.0.0.1 این مورد باعث می‌شود MySQL فقط به درخواست‌های لوکال پاسخ دهد. ج) استفاده از SSL/TLS در متصل شدن اپلیکیشن‌ها از راه دور، حتماً SSL را فعال کنید تا دیتا رمزنگاری شود. ۵. بکاپ و بازیابی (Backup and Restore) بکاپ‌گیری منظم، لازمه هر سرور حرفه‌ای است. mysqldump (بکاپ دستی Database): mysqldump -u root -p dbname > backup.sql برنامه‌ریزی بکاپ خودکار با cron: مثلاً هر شب ساعت ۲: 0 2 * * * mysqldump -u root -p'yourpassword' dbname > /backup/backup-$(date +%F).sql بازیابی بکاپ: mysql -u root -p dbname < backup.sql ۶. مانیتورینگ و تست سلامت MySQL ابزارهای مهم: mysqltuner: برای ارائه پیشنهاد بهینه‌سازی: wget http://mysqltuner.pl/ -O mysqltuner.pl perl mysqltuner.pl Percona Toolkit: مجموعه‌ای از ابزارهای حرفه‌ای برای تحلیل عملکرد و امنیت. مانیتورینگ با ابزارهایی مثل Zabbix، Prometheus، یا Grafana: جهت مشاهده پارامترهای حیاتی مانند Connectionها، میزان RAM مصرفی، میزان I/O و ... ۷. جداسازی دیتابیس و اپلیکیشن در پروژه‌های متوسط و بزرگ توصیه می‌شود MySQL روی یک سرور اختصاصی و مجزا از اپلیکیشن نصب شود. این موضوع در بهبود امنیت، پایداری و مقیاس‌پذیری کمک می‌کند. همچنین توصیه می‌شود دیسک دیتابیس از نوع SSD باشد تا سرعت خواندن‌/نوشتن افزایش یابد. ۸. تنظیمات پیشرفته و کاربردی دیگر innodb_log_file_size تاثیر در سرعت نوشتن و ریکاوری: innodb_log_file_size = 512M skip-name-resolve جهت بالا بردن سرعت Connection اولیه: skip-name-resolve sql_mode تنظیم حالت عملکرد SQL مثلاً برای فعال کردن Strict Mode: sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION ۹. آپدیت منظم MySQL و Patchهای امنیتی همیشه نسخه MySQL خود را آپدیت نگه‌دارید تا از Patchها و ویژگی‌های امنیتی جدید بهره‌مند شوید: sudo apt update && sudo apt upgrade sudo systemctl restart mysql نتیجه‌گیری کانفیگ اصولی MySQL، نه تنها موجب افزایش سرعت و پایداری سرور می‌شود، بلکه ضامن افزایش امنیت و کاهش ریسک‌های بالقوه است. بهتر است قبل از انجام تغییرات عمده، از دیتابیس بکاپ بگیرید و پس از آن عملکرد را با ابزارهای ذکرشده بررسی کنید تا بهترین نتیجه حاصل شود. این تنظیمات را متناسب با نیازهای پروژه و سخت‌افزار سرور خود شخصی‌سازی کنید. منابع پیشنهادی برای یادگیری بیشتر: MySQL Documentation Percona MySQL Performance Blog DigitalOcean MySQL Guides