بهینه سازی mySQL
۱)همیشه قبل از هر گونه تغییرات در فایل my.cnfیک نسخه پشتیبان کامل از آن تهیه کنید تا در صورت بروز مشکل یا لاین ها اشتباهی آن را جایگزین کنید.
۲)از هرگونه تغییر در innoDBخودآری کنید مگر اینکه به تغییرات در آن به خوبی اشنایی کامل را داشته باشد.بیشتر تنظیمات innoDBباید بدون تعغییر باشد وگرنه تغییرات درآن اطلاعات شما را ممکن است نابود کند.ما به شما پیشنهاد میکنیم در آن تعغیراتی بوجود نیاورید.
centOS:
همراه با mysql(4+5)یک my.cnfپیش فرض به شما داده خواهد شد که به سریعتر شدن mysql کمک خواهد کرد البته در صورتی که رم شما از ۲ گیگابایت بیشتر باشد.
cp -f /usr/share/mysql/my-large.cnf /etc/my.cnf
همچنین یک my-huge.cnfیا یک my-medium.cnfبر روی تنظیمات سختر افزار شما وجود دارد.محتویات این دو فایل my.cnf را جستجو کرده و به دنبال مقادیر مناسبتان بگردید
.پی نوشت۱:تنظیمات log-binبه صورت پیش فرض فعال است.این وضعیت به سرعت مقدار زیادی از فضای دیسک شمارا اشغال خواهد کرد.بهتر است قسمت log-bin را از etc/my.cnf.اگر وجود دارد جدا کنید.
پی نوشت۲:از فایل های قدیمی /etc.my.cnfخود یادداشت برداری کنید.اگر شما innodb_file_per_table=1را دارید,مطمعن شوید my.cnfجدیدی که نصب کرده اید هم همان تنظیمات را داشته باشد.همچنین اگرinnodb_file_per_table=1شما فعال نیست,my.cnfشما هم نباید فعال باشد.اگر my.cnfجدید شما تنظیمات متفاوتی برای innodb_file_per_tableدارد,ممکن است اطلاعات شمارا ناقص یا از بین ببرد.مطمعن شوید قبل از اعمال هرگونه تعغیراتی در my.cnfخود از فایل های .sqlخود پشتیبان کامل را گرفته باشید.
CentOS وMySQL 5.6:
MySQLنصب شده جدید شما ممکن از فایل های .cnfشمارا در خودشان نداشته باشندبه همین خاطر ما فایل های MySQL5.5را جدا کرده ایم و به نظر میرسد بر روی نسخه جدیدترMySQLهم کارایی داشته باشند:
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:
این روش منسوخ شده است و بهتر است از آن استفاده نشود.
اگر که شما بجازی mysql5,mysql4را دارید میتوانید با استفاده از کد زیر در /etc/my.cnfخود استفاده کنید:
vi /etc/my.cnf [ENTER]
کلید iرا فشار بدهید تا به حالت insert mode وارد شوید و کد زیر را ارسال کنید:
[mysqld] local-infile=0 skip-external-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_size=16M join_buffer_size=1M max_allowed_packet=16M table_open_cache=1024 sort_buffer_size=2M read_buffer_size=2M max_connect_errors=10 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 mode خارج شوید.سپس shift-Zرا فشار دهید تا ذخیره شود و خارج شوید و mysqlرا ریستارت کنید:
در redhat:
/sbin/service mysqld restart
درFreeBSD:
/usr/local/etc/rc.d/mysqld restart
بروزرسانی mysql در freeBSD:
در این مثال ما از mysql4.1.14با freeBSD4.*استفاده مکینیم.
دقت کنسید حرکت بین نسخه ۴٫۰٫*به ۴٫۱٫*مشکلات رمز عبور را همراه دارد.
cd /usr/local/directadmin/scripts/packages wget http://files.directadmin.com/services/freebsd4.8/mysql-standard-4.1.14-unknown-freebsd4.7-i386.tar.gz cd /usr/local tar xvzf /usr/local/directadmin/scripts/packages/mysql-standard-4.1.14-unknown-freebsd4.7-i386.tar.gz ln -s mysql-standard-4.1.14-unknown-freebsd4.7-i386 mysql cd mysql rm -rf data ln -s /home/mysql data /usr/local/etc/rc.d/mysqld restart
نصب دوباره MySQL:
ما به شما شدیدا
یشنهاد میکنیم قبل از انجام هر گونه عملیاتی یک پشتیبان کامل از DAخود بگیرید تا برای بازرگرداندن آن شمارا دچار مشکلی نکند,و همچنین پشتیبان کاستوم بیلد Mysqlبرای مواقع پیش بینی نشده.امروز ما برای شما هر دو روش جدید و قدیمی را آموزش میدهیم ولی باز هم به شما پیشنهاد میکنیم از روش جدید استفاده کنید زیرا هم سریعتر است هم خطرات کمتری از قبیل کامل به پایان نرسیدن نصب را به همراه ندارد.
روش جدید:کاستوم بیلد۲٫۰ rev2914قابلیتی دارد که خیلی راحت میتوان نسخه تازه ای از mySQL/MariaDBرا شروع کند.
اول برای شما چک خواهد کرد که ایا /var/lib/mysql وجود دارد,در صورت وجود نداشتن برای شما یک شروع تازه را اجرا خواهد کرد.
۱)هر گونه اطلاعاتی که دارید را پاک کرده,البته این در حالتی میباشید که ما فرض را بر این داریم که هیچکدام از اطلاعات خود را نیاز ندارید یا چیزی برای پاک شدن وجود ندارید یا از قبل یک نسخه پشتیبان کامل از .sqlتهیه کرده اید و قصد دارید آن ها را به روش دستی بازگردانی کنید.
perl -pi -e 's/mysqld=ON/mysqld=OFF/' /usr/local/directadmin/data/admin/services.status service mysqld stop mv /var/lib/mysql /var/lib/mysql.old
۲)حالا نسخه دلخواه خودتان را نصب کنید,برای مثال mariadb10.4یا mysql.
۳)round cube user+dbرا دوباره بسازید:
./build roundcube
۴)اطلاعات .sqlخود را بازرگردانی کنید,کاربران خود را با استفاده از DAبسازید.
روش قدیمی:
اگر MySQLنیاز به نصب دوباره توسط شما دارد یا به دلیلی بار اول هم نصب نشده است,با این اموزش شما میتوانید آن را دوباره نصب کنید,این روش تمامی اطلاعات قدیمی شمارا پاک خواهد کرد,پس اگر اطلاعاتی دارید بهتر است قبل از اجرا کردن این اموزش از آن ها نسخه پشتیبان کامل تهیه کنید و بعدا به صورت دستی آن را اعمال کنید.
cd /usr/local/directadmin/scripts ./mysql.sh rootpass da_admin daadminpass
در اینجا میتوانید رمز خود را به هر مقادیری که دلخواهتان است تعغیر دهید.نصب کننده از mysql=value برای rootpassاستفاده میکند و همینطور adminpass=برای adminpass,همینطور setup.txtممکن از متنی مشابه زیر از شما بپرسد:
It seems as though mysql has already been installed. The directory /var/lib/mysql has been found. For the best results, its recommended that this be deleted. All database data will be lost if you delete it Do you want to delete it? (y is recommended)? (y,n) :
در جواب آخرین خطی که در بالا میبینید باید کلمه yرا وارد کرده و کلید اینتر را بزنید تا یک شروع تازه به شما داده شود.اگر شما nرا انتخاب کنید,نصب کننده برنامه با شکست مواجه خواهد شد,مگر آنکه اطلاعات فعال شما ورود به سیستم بدون هیچ رمزی را بهشما بدهد ولی بهشما پیشنهاد میکنیم که y را انتخاب کرده.
اگر که نیاز به استفاده از Round Cube دارید بهتر است آن را هم دوباره کنید:
cd /usr/local/directadmin/custombuild ./build roundcube
ادرس my.cnf:
فایل my.cnfسیستم شما در ادرس زیر خواهد بود :
/etc/my.cnf
دایرکت ادمین یک my.cnfدیگر برای شما میسازد اما فقط برای mysqldumpها استفاده میشود در ادرس زیر میتوانید آن را پیدا کنید:
/usr/local/directadmin/conf/my.cnf
از آنجایی که به صورت عادی و معمول دوباره نوشته شده است نباید تعغییری کرده باشد(براساس mysql.confکه در همان ادرس وجود دارد)
غیر از دوفایل my.cnfهیچ فایل دیگر my.cnfنباید هیچ جای دیگر وجود داشته باشد.
فایل های بد رایجا my.cnf:
۱):
/etc/mysql/my.cnf
شما نباید این فایل را داشته باشید همچنین شما نباید اصلا مسیر /etc/mysql directoryرا داشته باشید,زیرا با /etc/my.cnf.ما به مشکل برخواهد خورد.
۲):
/root/.my.cnf
این مسیر نباید وجود داشته زیرا وقتی ما به دنبال mysqldumpهستیم ممکن است این مسیر به اشتباهی انتخاب شود.در فایل های my.cnf شما فقط /usr/local/directadmin/conf/my.cnfباید وجود داشته باشد,همچنین یک مقدار کاربر و رمز عبور فقط باید وجود داشته باشد.هیچگونه فایل my.cnfیا رمز یا کاربری نباید در آن وجود داشته باشد.