ºìÁªLinuxÃÅ»§
Linux°ïÖú

MYSQL·þÎñά»¤±Ê¼Ç

·¢²¼Ê±¼ä:2006-09-14 00:57:18À´Ô´:ºìÁª×÷Õß:chameleon
¸Õ¸ÕÔÚÍøÉÏËѵ½µÄ£¬¾õµÃдµÃºÜºÃ¡£
×î½ü¹¤×÷ÉÏÒÔ¼°×Ô¼ºµÄIECN¶¼Óõ½ÁËMySQL£¬¸Ð¾õ¶Ô×Ô¼ººÜÓÐÓá£
ÍüÁË˭˵µÄÁË£º¡°Ï¸½Ú¾ö¶¨³É°Ü¡±£¬Õâ¾ä»°ËµµÃÌ«¶ÔÁË£¬Èç¹ûÄãÔÚÒ»¼þÊÂÉÏÔÔÁËÒ»¸ö´ó¸úÍ·£¬»ØÍ·ÕÒÕÒÔ­Òò£¬¿ÉÄܾÍÊÇij¸öϸ½Úµ¼Öµġ£
·¢ÏֺܶàÈË¿ª·¢ÏîĿʱºÜ¶àϸ½Ú²»±»×¢Òâµ½£¬Æäʵһ¸öÏîÄ¿ÔÚÉè¼Æ½×¶Î¡°µ¢¸é¡±µãʱ¼ä£¬¿ÉÒÔΪÕû¸öÏîÄ¿½ÚÊ¡¸ü¶àµÄʱ¼ä£¬Õâ¸öµÀÀí¼¸ºõÿ¸öÈ˶¼100%³ÐÈÏ£¬µ«È´´ó²¿·ÖÈ˶¼×ö²»µ½¡£
Ò»¸öÏîÄ¿¿ª·¢Ê±¼äÓÃ1¸öÔ£¬Ð޸ġ¢µ÷ÕûµÄʱ¼ä¿ÉÄÜÊÇ1¸öÔ£»Èç¹ûÕâ¸öÏîÄ¿ÓÃÁË°ë¸öÔµÄʱ¼ä¿ª·¢ÍêÁË£¬Ð޸ġ¢µ÷ÕûµÄʱ¼ä¿ÉÄܾÍÊÇ2¸öÔÂÉõÖÁ¸ü³¤¡­¡­
ºÃÁË˵ÁË°ëÌì·Ï»°×ªÌûµÄÎÄÕ»¹Ã»·¢³öÀ´ÄØ ^^
ÒÔÏÂÊÇתÌûÄÚÈÝ£º
====================================
Ô­Îijö´¦£ºhttp://www.coverer.com/mt/archives/2005_05.shtml
×÷Õߣºcoverer

MYSQL·þÎñά»¤±Ê¼Ç
ʹÓÃMYSQL·þÎñµÄһЩ¾­Ñ飬Ö÷Òª´ÓÒÔϼ¸¸ö·½Ã濼ÂǵÄMYSQL·þÎñ¹æ»®Éè¼Æ¡£

1. MYSQL·þÎñµÄ°²×°/ÅäÖõÄͨÓÃÐÔ£»
2. ϵͳµÄÉý¼¶ºÍÊý¾ÝǨÒÆ·½±ãÐÔ£»
3. ±¸·ÝºÍϵͳ¿ìËÙ»Ö¸´£»
4. Êý¾Ý¿âÓ¦ÓõÄÉè¼ÆÒªµã£»


MYSQL·þÎñÆ÷µÄ¹æ»®
=================
ΪÁËÒÔºóά»¤£¬Éý¼¶±¸·ÝµÄ·½±ãºÍÊý¾ÝµÄ°²È«ÐÔ£¬×îºÃ½«MYSQL³ÌÐòÎļþºÍÊý¾Ý·Ö±ð°²×°ÔÚ¡°²»Í¬µÄÓ²ÅÌ¡±ÉÏ¡£

/ /
| /usr <== ²Ù×÷ϵͳ
| /home/mysql <== mysqlÖ÷Ŀ¼£¬ÎªÁË·½±ãÉý¼¶£¬ÕâÖ»ÊÇÒ»¸ö×îа汾Ŀ¼µÄÁ´½Ó
Ó²ÅÌ1==>| /home/mysql-3.23.54/ <== ×îа汾µÄmysql /home/mysqlÁ´½Óµ½ÕâÀï
/home/mysql-old/ <== ÒÔÇ°ÔËÐеľɰ汾µÄmysql

/ /data/app_1/ <== Ó¦ÓÃÊý¾ÝºÍÆô¶¯½Å±¾µÈ
Ó²ÅÌ2==>| /data/app_2/
/data/app_3/


mysql·þÎñµÄ°²×°ºÍ·þÎñµÄÆô¶¯£º
MYSQLÒ»°ãʹÓõ±Ç°STABLEµÄ°æ±¾£¬¾¡Á¿²»Ê¹ÓÃ--with-charset=Ñ¡ÏÎҸоõwith-charsetÖ»ÔÚ°´×ÖĸÅÅÐòµÄʱºò²ÅÓÐÓã¬ÕâЩѡÏî»á¶ÔÊý¾ÝµÄǨÒÆ´øÀ´ºÜ¶àÂé·³¡£
configure --prefix=/home/mysql
make
make install

·þÎñµÄÆô¶¯ºÍÍ£Ö¹
================
1 ¸´ÖÆȱʡµÄmysql/var/mysqlµ½ /data/app_1/Ŀ¼Ï£¬
2 MYSQLDµÄÆô¶¯½Å±¾£ºstart_mysql.sh
#!/bin/sh
rundir=`dirname "$0"`
echo "$rundir"
/home/mysql/bin/safe_mysqld --user=mysql --pid-file="$rundir"/mysql.pid --datadir="$rundir"/var "$@"
-O max_connections=500 -O wait_timeout=600 -O key_buffer=32M --port=3402 --socket="$rundir"/mysql.sock &

×¢ÊÍ£º
--pid-file="$rundir"/mysql.pid --socket="$rundir"/mysql.sock --datadir="$rundir"/var
Ä¿µÄ¶¼Êǽ«ÏàÓ¦Êý¾ÝºÍÓ¦ÓÃÁÙʱÎļþ·ÅÔÚÒ»Æð£»
-O ºóÃæÒ»°ãÊÇ·þÎñÆ÷Æô¶¯È«¾Ö±äÁ¿ÓÅ»¯²ÎÊý£¬ÓÐʱºòÐèÒª¸ù¾Ý¾ßÌåÓ¦Óõ÷Õû£»
--port: ²»Í¬µÄÓ¦ÓÃʹÓÃPORT²ÎÊý·Ö²¼µ½²»Í¬µÄ·þÎñÉÏÈ¥£¬Ò»¸ö·þÎñ¿ÉÒÔÌṩµÄÁ¬½ÓÊýÒ»°ãÊÇMYSQL·þÎñµÄÖ÷Ҫƿ¾±£»

Ð޸IJ»Í¬µÄ·þÎñµ½²»Í¬µÄ¶Ë¿Úºó£¬ÔÚrc.localÎļþÖмÓÈ룺
/data/app_1/start_mysql.sh
/data/app_2/start_mysql.sh
/data/app_3/start_mysql.sh
×¢Ò⣺±ØÐëдȫ·¾¶

3 MYSQLDµÄÍ£Ö¹½Å±¾£ºstop_mysql.sh
#!/bin/sh
rundir=`dirname "$0"`
echo "$rundir"
/home/mysql/bin/mysqladmin -u mysql -S"$rundir"/mysql.sock shutdown

ʹÓÃÕâ¸ö½Å±¾µÄºÃ´¦ÔÚÓÚ£º
1 ¶à¸ö·þÎñÆô¶¯£ºÖ»ÐèÒªÐ޸Ľű¾ÖеÄ--port=²ÎÊý¡£µ¥¸öĿ¼ÏµÄÊý¾ÝºÍ·þÎñ½Å±¾¶¼ÊÇ¿ÉÒÔ¶ÀÁ¢´ò°üµÄ¡£
2 ËùÓзþÎñÏàÓ¦Îļþ¶¼Î»ÓÚ/data/app_1/Ŀ¼Ï£º±ÈÈ磺mysql.pid mysql.sock£¬µ±Ò»Ì¨·þÎñÆ÷ÉÏÆô¶¯¶à¸ö·þÎñʱ£¬¶à¸ö·þÎñ²»»á»¥ÏàÓ°Ïì¡£µ«¶¼·Åµ½È±Ê¡µÄ/tmp/ÏÂÔòÓпÉÄܱ»ÆäËûÓ¦ÓÃÎóɾ¡£
3 µ±Ó²ÅÌ1³öÎÊÌâÒÔºó£¬Ö±½Ó½«Ó²ÅÌ2·Åµ½Ò»Ì¨×°ºÃMYSQLµÄ·þÎñÆ÷ÉϾͿÉÒÔÁ¢¿Ì»Ö¸´·þÎñ£¨Èç¹û·Åµ½my.cnfÀïÔò»¹ÐèÒª±¸·ÝÏàÓ¦µÄÅäÖÃÎļþ£©¡£

·þÎñÆô¶¯ºó/data/app_1/ÏÂÏàÓ¦µÄÎļþºÍĿ¼·Ö²¼ÈçÏ£º
/data/app_1/
start_mysql.sh ·þÎñÆô¶¯½Å±¾
stop_mysql.sh ·þÎñÍ£Ö¹½Å±¾
mysql.pid ·þÎñµÄ½ø³ÌID
mysql.sock ·þÎñµÄSOCK
var/ Êý¾ÝÇø
mysql/ Óû§¿â
app_1_db_1/ Ó¦Óÿâ
app_2_db_2/
...
/data/app_2/
...

²é¿´ËùÓеÄÓ¦Óýø³ÌID£º
cat /data/*/mysql.pid

²é¿´ËùÓÐÊý¾Ý¿âµÄ´íÎóÈÕÖ¾£º
cat /data/*/var/*.err

¸öÈ˽¨Ò飺MYSQLµÄÖ÷Ҫƿ¾±ÔÚPORTµÄÁ¬½ÓÊýÉÏ£¬Òò´Ë£¬½«±í½á¹¹ÓÅ»¯ºÃÒÔºó£¬ÏàÓ¦µ¥¸öMYSQL·þÎñµÄCPUÕ¼ÓÃÈÔÈ»ÔÚ10£¥ÒÔÉÏ£¬¾ÍÒª¿¼Âǽ«·þÎñ²ð·Öµ½¶à¸öPORTÉÏÔËÐÐÁË¡£

·þÎñµÄ±¸·Ý
==========
¾¡Á¿Ê¹ÓÃMYSQL DUMP¶ø²»ÊÇÖ±½Ó±¸·ÝÊý¾ÝÎļþ£¬ÒÔÏÂÊÇÒ»¸ö°´weekday½«Êý¾ÝÂÖÑ­±¸·ÝµÄ½Å±¾£º±¸·ÝµÄ¼ä¸ôºÍÖÜÆÚ¿ÉÒÔ¸ù¾Ý±¸·ÝµÄÐèÇóÈ·¶¨
/home/mysql/bin/mysqldump -S/data/app_1/mysql.sock -umysql db_name | gzip -f>/path/to/backup/db_name.`data +%w`.dump.gz
Òò´ËдÔÚCRONTABÖÐÒ»°ãÊÇ£º
* 6 * * * /home/mysql/bin/mysqldump -S/data/app_1/mysql.sock -umysql db_name | gzip -f>/path/to/backup/db_name.`data +\%w`.dump.gz
×¢Ò⣺
1 ÔÚcrontabÖÐ'%'ÐèҪתÒå³É'\%'
2 ¸ù¾ÝÈÕ־ͳ¼Æ£¬Ó¦ÓøºÔØ×îµÍµÄʱºòÒ»°ãÊÇÔÚÔçÉÏ6µã

Ïȱ¸·ÝÔÚ±¾µØÈ»ºó´«µ½Ô¶³ÌµÄ±¸·Ý·þÎñÆ÷ÉÏ£¬»òÕßÖ±½Ó½¨Á¢Ò»¸öÊý¾Ý¿â±¸·ÝÕʺţ¬Ö±½ÓÔÚÔ¶³ÌµÄ·þÎñÆ÷Éϱ¸·Ý£¬Ô¶³Ì±¸·ÝÖ»ÐèÒª½«ÒÔÉϽű¾ÖеÄ-S /path/to/msyql.sock¸Ä³É-h IP.ADDRESS¼´¿É¡£

Êý¾ÝµÄ»Ö¸´ºÍϵͳµÄÉý¼¶
======================
ÈÕ³£Î¬»¤ºÍÊý¾ÝǨÒÆ£ºÔÚÊý¾ÝÅÌûÓб»ÆÆ»µµÄÇé¿öÏÂ
Ó²ÅÌÒ»°ãÊÇϵͳÖÐÊÙÃü×îµÍµÄÓ²¼þ¡£¶øϵͳ£¨°üÀ¨²Ù×÷ϵͳºÍMYSQLÓ¦Ó㩵ÄÉý¼¶ºÍÓ²¼þÉý¼¶£¬¶¼»áÓöµ½Êý¾ÝǨÒƵÄÎÊÌâ¡£
Ö»ÒªÊý¾Ý²»±ä£¬ÏÈ×°ºÃ·þÎñÆ÷£¬È»ºóÖ±½Ó½«Êý¾ÝÅÌ£¨Ó²ÅÌ2£©°²×°ÉÏ£¬Ö»ÐèÒª½«Æô¶¯½Å±¾ÖØмÓÈëµ½rc.localÎļþÖУ¬ÏµÍ³¾ÍËãÊǺܺõĻָ´ÁË¡£

ÔÖÄѻָ´£ºÊý¾Ý±¾Éí±»ÆÆ»µµÄÇé¿öÏÂ
È·¶¨ÆÆ»µµÄʱ¼äµã£¬È»ºó´Ó±¸·ÝÊý¾ÝÖлָ´¡£

Ó¦ÓõÄÉè¼ÆÒªµã
==============

1. ·ÇÓÃÊý¾Ý¿â²»¿ÉÂð£¿ËäÈ»Êý¾Ý¿âµÄÈ·¿ÉÒÔ¼ò»¯ºÜ¶àÓ¦ÓõĽṹÉè¼Æ£¬µ«±¾ÉíÒ²ÊÇÒ»¸öϵͳ×ÊÔ´ÏûºÄ±È½Ï´óµÄÓ¦Óá£ËùÒÔÔÚijЩÇé¿öÏÂÎı¾£¬DBM±ÈÊý¾Ý¿âÊǸüºÃµÄÑ¡Ôñ£¬±ÈÈ磺ºÜ¶àÓ¦ÓÃÈç¹ûûÓкܸߵÄʵʱͳ¼ÆÐèÇóµÄ»°£¬ÍêÈ«¿ÉÒÔÏȼǼµ½ÎļþÈÕÖ¾ÖУ¬¶¨Æڵĵ¼Èëµ½Êý¾Ý¿âÖÐ×öºóÐøͳ¼Æ·ÖÎö¡£Èç¹û»¹ÊÇÐèÒª¼Ç¼2ά±í½á¹¹£¬½á¹¹×ã¹»¼òµ¥µÄ»°¿ÉÒÔʹÓÃDBM½á¹¹¡£¼´Ê¹ÐèҪʹÓÃÊý¾Ý¿âµÄ£¬Ó¦ÓÃÈç¹ûûÓÐÌ«¸´ÔÓµÄÊý¾ÝÍêÕûÐÔÐèÇóµÄ»¯£¬ÍêÈ«¿ÉÒÔ²»Ê¹ÓÃÄÇЩ֧³ÖÍâ¼üµÄÉÌÒµÊý¾Ý¿â£¬±ÈÈçMYSQL¡£Ö»Óзdz£ÐèÒªÍêÕûµÄÉÌÒµÂß¼­µÄʱºò²ÅÐèÒªORACLEÕâÑùµÄ´óÐÍÊý¾Ý¿â¡£ÍêÈ«¿ÉÒÔ°ÑÎļþ£¬DBM£¬MYSQLµÈÇáÁ¿¼¶×öÇ°¶ËÊý¾Ý´æÈ¡£¬ÓÃORACLE×öÊý¾Ý¿â²Ö¿âÍê³É¸´ÔÓµÄÊý¾Ý¿âÍÚ¾ò·ÖÎö¹¤×÷¡£
2. Êý¾Ý¿â·þÎñµÄÖ÷Ҫƿ¾±£ºµ¥¸ö·þÎñµÄÁ¬½ÓÊý
¶ÔÓÚÒ»¸öÓ¦ÓÃÀ´Ëµ£¬Èç¹ûÊý¾Ý¿â±í½á¹¹µÄÉè¼ÆÄܹ»°´ÕÕÊý¾Ý¿âÔ­ÀíµÄ·¶Ê½À´Éè¼ÆµÄ»°£¬²¢ÇÒÒѾ­Ê¹ÓÃÁË×îа汾µÄMYSQL£¬²¢ÇÒ°´ÕձȽÏÓÅ»¯µÄ·½Ê½ÔËÐÐÁË£¬ÄÇô×îºóµÄÖ÷Ҫƿ¾±Ò»°ãÔÚÓÚµ¥¸ö·þÎñµÄÁ¬½ÓÊý£¬¼´Ê¹Ò»¸öÊý¾Ý¿â¿ÉÒÔÖ§³Ö²¢·¢500¸öÁ¬½Ó£¬×îºÃÒ²²»Òª°ÑÓ¦ÓÃÓõ½Õâ¸öµØ²½£¬ÒòΪ²¢·¢Á¬½ÓÊý¹ý¶àÊý¾Ý¿â·þÎñ±¾ÉíÓÃÓÚµ÷¶ÈµÄÏ̵߳ĿªÏúÒ²»á·Ç³£´óÁË¡£ËùÒÔÈç¹ûÓ¦ÓÃÔÊÐíµÄ»°£ºÈÃһ̨»úÆ÷¶àÅܼ¸¸öMYSQL·þÎñ·Öµ£¡£½«·þÎñ¾ùºâµÄ¹æ»®µ½¶à¸öMYSQL·þÎñ¶Ë¿ÚÉÏ£º±ÈÈçapp_1 ==> 3301 app_2 ==> 3302...app_9 ==> 3309¡£Ò»¸ö1GÄÚ´æµÄ»úÆ÷ÅÜÉÏ10¸öMYSQLÊǺÜÕý³£µÄ¡£ÈÃ10¸öMYSQLD³Ðµ£1000¸ö²¢·¢Á¬½ÓЧÂÊÒª±ÈÈÃ2¸öMYSQLD³Ðµ£1000¸öЧÂʸߵĶࡣµ±È»£¬ÕâÑùÒ²»á´øÀ´Ò»Ð©Ó¦Óñà³ÌÉϵĸ´ÔӶȣ»
3. ʹÓõ¥¶ÀµÄÊý¾Ý¿â·þÎñÆ÷£¨²»ÒªºÍǰ̨WEB·þÎñÇÀÄڴ棩£¬MYSQLÓµÓиü¶àµÄÄÚ´æ¾Í¿ÉÄÜÄÜÓÐЧµÄ½øÐнá¹û¼¯µÄ»º´æ£»
4. Ó¦Óþ¡Á¿Ê¹ÓÃPCONNECTºÍpolling»úÖÆ£¬ÓÃÓÚ½ÚÊ¡MYSQL·þÎñ½¨Á¢Á¬½ÓµÄ¿ªÏú£»
5. ±íµÄºáÏò²ð·Ö£ºÈÃ×î³£±»·ÃÎʵÄ10%µÄÊý¾Ý·ÅÔÚÒ»¸öС±íÀ90%µÄÀúÊ·Êý¾Ý·ÅÔÚÒ»¸ö¹éµµ±íÀÊý¾ÝÖмäͨ¹ý¶¨ÆÚ¡°°á¼Ò¡±ºÍ¶¨ÆÚɾ³ýÎÞЧÊý¾ÝÀ´½ÚÊ¡¡£ÕâÑù¶ÔÓÚÓ¦ÓÃÀ´Ëµ×ÜÊÇÔÚ10%Êý¾ÝÖнøÐÐÑ¡Ôñ£¬±È½ÏÓÐÀûÓÚÊý¾ÝµÄ»º´æ£¬²»ÒªÖ¸ÍûMYSQLÖжԵ¥±í¼Ç¼ÊýÔÚ10Íò¼¶ÒÔÉÏ»¹ÓбȽϸߵÄЧÂÊ¡£
6. ±íµÄ×ÝÏò²ð·Ö£¨¹ý¶É·¶»¯£©£º½«ËùÓеĶ¨³¤×ֶΣ¨char, intµÈ£©·ÅÔÚÒ»¸ö±íÀËùÓеı䳤×ֶΣ¨varchar,text,blobµÈ£©·ÅÔÚÁíÍâÒ»¸ö±íÀ2¸ö±íÖ®¼äͨ¹ýÖ÷¼ü¹ØÁª£¬ÕâÑù£¬¶¨³¤×ֶαí¿ÉÒԵõ½ºÜ´óµÄÓÅ»¯£¨ÉõÖÁ¿ÉÒÔʹÓÃHEAP±íÀàÐÍ£¬Êý¾ÝÍêÈ«ÔÚÄÚ´æÖдæÈ¡£©£¬ÕâÀïҲ˵Ã÷ÁíÍâÒ»¸öÔ­Ôò£¬¶ÔÓÚÎÒÃÇÀ´Ëµ£¬¾¡Á¿Ê¹Óö¨³¤×ֶοÉÒÔͨ¹ý¿Õ¼äµÄËðʧ»»È¡·ÃÎÊЧÂʵÄÌá¸ß¡£MYSQLÖ®ËùÒÔÖ§³Ö¶àÖÖ±íÀàÐÍ£¬Êµ¼ÊÉÏÊÇÕë¶Ô²»Í¬Ó¦ÓÃÌṩÁ˲»Í¬µÄÓÅ»¯·½Ê½£»
7. ×ÐϸµÄ¼ì²éÓ¦ÓõÄË÷ÒýÉè¼Æ£¬ÉõÖÁÔÚ·þÎñÆô¶¯ÖмÓÈë --log-slow-queries[=file]ÓÃÓÚ¸ú×Ù·ÖÎöÓ¦ÓÃÆ¿¾±¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ