TegraHost
April 10th, 2016, 11:30
بهینه سازی MySQL و فایل my.cnf در دایرکت ادمین: یکی از بزرگ ترین معضلات مدیران سرور های اشتراکی لینوکس، بهینه کردن MySQL از طریق تنظیمات فایل my.cnf است. در صورتی که این مقادیر به صورت صحیح و حرفه ای ست شده باشند، فشار MySQL به سرور به طور قابل ملاحظه ای کاهش یافته و سرعت لود صفحات نیز بالا تر خواهد رفت.
بهینه سازی MySQL و فایل my.cnf در دایرکت ادمین
با توجه به اینکه دایرکت ادمین در توزیع های مختلف لینوکس قابل نصب و اجراست، نحوه بهینه سازی MySQL از طریق فایل کانفیگ my.cnf را به صورت مجزا در ۲ توزیع اصلی RHEL و Debian Based ها بررسی میکنیم.
cp -f /usr/share/mysql/my-large.cnf /etc/my.cnf
با توجه به سخت افزار شما، فایلی به نام my-huge.cnf یا my-medium.cnf نیز وجود دارد . محتویات این فایل ها را بررسی کنید.
نکته ۱ : گزینه log-bin به طور پیش فرض فعال است که به سرعت از فضای دیسک استفاده میکند، توصیه میشود که خط log-bin را در فایل /etc/my.cnf از حالت کامنت خارج کنید ( اگر وجود داشته باشد )
نکته ۲ : به فایل /etc/my.cnf قدیمی خود توجه داشته باشید ، اگر گزینه innodb_file_per_table=1 را در این فایل دارید مطمئن شوید که در فایل جدید نیز این تنظیمات وجود داشته باشد. به طور مشابه اگر در فایل قدیمی شما این گزینه فعال نیست، در فایل جدید هم نباید فعال باشد. اگر فایل my.cnf جدید دارای تنظیمات مختلفی برای innodb_file_per_table باشد، ممکن است اطلاعات شما را از بین ببرد.
مطمئن شوید که قبل از ایجاد هرگونه تغییرات در my.cnf ، از فایل های .sql به طور کامل بک آپ تهیه بگیرید.
Debian/FreeBSD
ما در حال حاضر برای این سیستم عامل ها فایل my.cnf بهینه سازی شده نداریم.
CentOS و MySQL 5.6
MySQL جدید نصب شده ممکن است شامل فایل های my-*.cnf files نباشد
ما در این آموزش چند فایل از MySQL 5.5 که به نظر می رسد با MySQL 5.6 کار میکند اضافه کرده ایم . برای مثال :
cp /etc/my.cnf /etc/my.cnf.old
wget -O /etc/my.cnf http://files.directadmin.com/services/all/mysql/my-huge-5.5.cnf
MySQL 4.x
اگر شما از mysql 4 استفاده می کنید ( نه mysql 5 ) میتوانید از کد زیر در فایل /etc/my.cnf استفاده کنید :
vi /etc/my.cnf [ENTER]
با فشردن دکمه I حالت insert را فعال کرده و سپس past کنید:
[mysqld]
local-infile=0
skip-locking
query_cache_limit=1M
query_cache_size=32M
query_cache_type=1
max_connections=500
interactive_timeout=100
wait_timeout=100
connect_timeout=10
thread_cache_size=128
key_buffer=16M
join_buffer=1M
max_allowed_packet=16M
table_cache=1024
record_buffer=1M
sort_buffer_size=2M
read_buffer_size=2M
max_connect_errors=10
# Try number of CPU's*2 for thread_concurrency
thread_concurrency=2
myisam_sort_buffer_size=64M
server-id=1
[safe_mysqld]
err-log=/var/log/mysqld.log
open_files_limit=8192
[mysqldump]
quick
max_allowed_packet=16M
[mysql]
no-auto-rehash
#safe-updates
[isamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
[myisamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
[mysqlhotcopy]
interactive-timeout
از دکمه های Ctrl-C برای خروج از حالت insert و سپس برای ذخیره شدن و خروج از فایل از دکمه های Shift-Z استفاده کنید. اکنون mysqld را ری استارت کنید :
در لینوکس Redhat دستور زیر را اجرا کنید:
/sbin/service mysqld restart
در FreeBSD دستور زیر را اجرا کنید :
/usr/local/etc/rc.d/mysqld restart
این یک آموزش کلی و Basic برای بهینه سازی MySQL و فایل my.cnf در دایرکت ادمین و سرور های مبتنی بر Directadmin بود، کلیه مقادیر مشخص شده در مقاله فوق، نسبی و بر اساس کانفیگ سخت افزاری سرور و نوع کاربری آن متغیر است و کپی و پیست کردن محض آن ها نه تنها کمکی به بهینه سازی MySQL در سرور نمیکند، بلکه در مواردی باعث ایجاد اختلال در عملکرد سرور خواهند شد. اگر مبتنی هستید یا دقیقا متوجه مفاهیم آموزش داده در این سایت نشده اید، از دستکاری و کانفیگ سرور های مهم و با اهمیت اکیدا خود داری کنید و بهینه سازی MySQL را به افراد با تجربه و واجد شرایط بسپارید. ایجاد تغییرات اشتباه در فایل my.cnf حتی میتواند باعث Crash کردن MySQL و Corrupt شدن جداول دیتبایس های Innodb شده که در مواردی غیر قابل بازگشت است.
بهینه سازی MySQL و فایل my.cnf در دایرکت ادمین
با توجه به اینکه دایرکت ادمین در توزیع های مختلف لینوکس قابل نصب و اجراست، نحوه بهینه سازی MySQL از طریق فایل کانفیگ my.cnf را به صورت مجزا در ۲ توزیع اصلی RHEL و Debian Based ها بررسی میکنیم.
cp -f /usr/share/mysql/my-large.cnf /etc/my.cnf
با توجه به سخت افزار شما، فایلی به نام my-huge.cnf یا my-medium.cnf نیز وجود دارد . محتویات این فایل ها را بررسی کنید.
نکته ۱ : گزینه log-bin به طور پیش فرض فعال است که به سرعت از فضای دیسک استفاده میکند، توصیه میشود که خط log-bin را در فایل /etc/my.cnf از حالت کامنت خارج کنید ( اگر وجود داشته باشد )
نکته ۲ : به فایل /etc/my.cnf قدیمی خود توجه داشته باشید ، اگر گزینه innodb_file_per_table=1 را در این فایل دارید مطمئن شوید که در فایل جدید نیز این تنظیمات وجود داشته باشد. به طور مشابه اگر در فایل قدیمی شما این گزینه فعال نیست، در فایل جدید هم نباید فعال باشد. اگر فایل my.cnf جدید دارای تنظیمات مختلفی برای innodb_file_per_table باشد، ممکن است اطلاعات شما را از بین ببرد.
مطمئن شوید که قبل از ایجاد هرگونه تغییرات در my.cnf ، از فایل های .sql به طور کامل بک آپ تهیه بگیرید.
Debian/FreeBSD
ما در حال حاضر برای این سیستم عامل ها فایل my.cnf بهینه سازی شده نداریم.
CentOS و MySQL 5.6
MySQL جدید نصب شده ممکن است شامل فایل های my-*.cnf files نباشد
ما در این آموزش چند فایل از MySQL 5.5 که به نظر می رسد با MySQL 5.6 کار میکند اضافه کرده ایم . برای مثال :
cp /etc/my.cnf /etc/my.cnf.old
wget -O /etc/my.cnf http://files.directadmin.com/services/all/mysql/my-huge-5.5.cnf
MySQL 4.x
اگر شما از mysql 4 استفاده می کنید ( نه mysql 5 ) میتوانید از کد زیر در فایل /etc/my.cnf استفاده کنید :
vi /etc/my.cnf [ENTER]
با فشردن دکمه I حالت insert را فعال کرده و سپس past کنید:
[mysqld]
local-infile=0
skip-locking
query_cache_limit=1M
query_cache_size=32M
query_cache_type=1
max_connections=500
interactive_timeout=100
wait_timeout=100
connect_timeout=10
thread_cache_size=128
key_buffer=16M
join_buffer=1M
max_allowed_packet=16M
table_cache=1024
record_buffer=1M
sort_buffer_size=2M
read_buffer_size=2M
max_connect_errors=10
# Try number of CPU's*2 for thread_concurrency
thread_concurrency=2
myisam_sort_buffer_size=64M
server-id=1
[safe_mysqld]
err-log=/var/log/mysqld.log
open_files_limit=8192
[mysqldump]
quick
max_allowed_packet=16M
[mysql]
no-auto-rehash
#safe-updates
[isamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
[myisamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
[mysqlhotcopy]
interactive-timeout
از دکمه های Ctrl-C برای خروج از حالت insert و سپس برای ذخیره شدن و خروج از فایل از دکمه های Shift-Z استفاده کنید. اکنون mysqld را ری استارت کنید :
در لینوکس Redhat دستور زیر را اجرا کنید:
/sbin/service mysqld restart
در FreeBSD دستور زیر را اجرا کنید :
/usr/local/etc/rc.d/mysqld restart
این یک آموزش کلی و Basic برای بهینه سازی MySQL و فایل my.cnf در دایرکت ادمین و سرور های مبتنی بر Directadmin بود، کلیه مقادیر مشخص شده در مقاله فوق، نسبی و بر اساس کانفیگ سخت افزاری سرور و نوع کاربری آن متغیر است و کپی و پیست کردن محض آن ها نه تنها کمکی به بهینه سازی MySQL در سرور نمیکند، بلکه در مواردی باعث ایجاد اختلال در عملکرد سرور خواهند شد. اگر مبتنی هستید یا دقیقا متوجه مفاهیم آموزش داده در این سایت نشده اید، از دستکاری و کانفیگ سرور های مهم و با اهمیت اکیدا خود داری کنید و بهینه سازی MySQL را به افراد با تجربه و واجد شرایط بسپارید. ایجاد تغییرات اشتباه در فایل my.cnf حتی میتواند باعث Crash کردن MySQL و Corrupt شدن جداول دیتبایس های Innodb شده که در مواردی غیر قابل بازگشت است.