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

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

·¢²¼Ê±¼ä:2006-08-20 00:09:56À´Ô´:ºìÁª×÷Õß:golshing
żÔÚÕâÀï½éÉÜһЩÔÚMYSQL·þÎñÉϵľ­Ñ飬ÓÐʲô²»ÕýÈ·µÄµØ·½»¶Ó­´ó¼ÒÌá³ö¡£
żÖ÷Òª´ÓÒÔϼ¸¸ö·½Ãæ½²½âMYSQL·þÎñ¹æ»®Éè¼Æ£º
1 MYSQL·þÎñµÄ°²×°/ÅäÖõÄͨÓÃÐÔ£»
2 ϵͳµÄÉý¼¶ºÍÊý¾ÝǨÒÆ·½±ãÐÔ£»
3 ±¸·ÝºÍϵͳ¿ìËÙ»Ö¸´£»

MYSQL·þÎñÆ÷µÄ¹æ»®

ΪÁËÒÔºóά»¤£¬Éý¼¶±¸·ÝµÄ·½±ãºÍÊý¾ÝµÄ°²È«ÐÔ£¬×îºÃ½«MYSQL³ÌÐòÎļþºÍÊý¾Ý·Ö±ð°²×°ÔÚ¡°²»Í¬µÄÓ²¼þ¡±ÉÏ¡£
/
/usr <== ²Ù×÷ϵͳ }==>; Ó²ÅÌ1
/home/mysql <== 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ÎļþÖУ¬ÏµÍ³¾ÍËãÊǺܺõĻָ´ÁË¡£

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

Ó¦ÓõÄÉè¼ÆÒªµã
·ÇÓÃÊý¾Ý¿â²»¿ÉÂð£¿
Êý¾Ý¿âµÄÈ·¿ÉÒÔ¼ò»¯ºÜ¶àÓ¦ÓõĽṹÉè¼Æ£¬µ«±¾ÉíÒ²ÊÇÒ»¸öϵͳ×ÊÔ´ÏûºÄ±È½Ï´óµÄÓ¦Óá£ËùÒԺܶàÓ¦ÓÃÈç¹ûûÓкܸߵÄʵʱͳ¼ÆÐèÇóµÄ»°£¬ÍêÈ«¿ÉÒÔÏȼǼµ½ÎļþÈÕÖ¾ÖУ¬¶¨Æڵĵ¼Èëµ½Êý¾Ý¿âÖÐ×öºóÐøͳ¼Æ·ÖÎö¡£Èç¹û»¹ÊÇÐèÒª¼Ç¼2ά±í½á¹¹£¬½á¹¹×ã¹»¼òµ¥µÄ»°¿ÉÒÔʹÓÃDBM½á¹¹¡£¼´Ê¹ÐèҪʹÓÃÊý¾Ý¿âµÄ£¬Ó¦ÓÃÈç¹ûûÓÐÌ«¸´ÔÓµÄÊý¾ÝÍêÕûÐÔÐèÇóµÄ»¯£¬ÍêÈ«¿ÉÒÔ²»Ê¹ÓÃÄÇЩ֧³ÖÍâ¼üµÄÉÌÒµÊý¾Ý¿â£¬

Êý¾Ý¿â·þÎñµÄÖ÷Ҫƿ¾±£ºµ¥¸ö·þÎñµÄÁ¬½ÓÊý
¶ÔÓÚÒ»¸öÓ¦ÓÃÀ´Ëµ£¬Èç¹ûÊý¾Ý¿â±í½á¹¹µÄÉè¼ÆÄܹ»°´ÕÕÊý¾Ý¿âÔ­ÀíµÄ·¶Ê½À´Éè¼ÆµÄ»°£¬²¢ÇÒÒѾ­Ê¹ÓÃÁË×îа汾µÄMYSQL£¬²¢ÇÒ°´ÕձȽÏÓÅ»¯µÄ·½Ê½ÔËÐÐÁË£¬ÄÇô×îºóµÄÖ÷Ҫƿ¾±Ò»°ãÔÚÓÚµ¥¸ö·þÎñµÄÁ¬½ÓÊý£¬¼´Ê¹Ò»¸öÊý¾Ý¿â¿ÉÒÔÖ§³Ö²¢·¢500¸öÁ¬½Ó£¬×îºÃÒ²²»Òª°ÑÓ¦ÓÃÓõ½Õâ¸öµØ²½£¬ÒòΪ²¢·¢Á¬½ÓÊý¹ý¶àÊý¾Ý¿â·þÎñ±¾ÉíÓÃÓÚµ÷¶ÈµÄÏ̵߳ĿªÏúÒ²»á·Ç³£´óÁË¡£ËùÒÔÈç¹ûÓ¦ÓÃÔÊÐíµÄ»°£ºÈÃһ̨»úÆ÷¶àÅܼ¸¸öMYSQL·þÎñ·Öµ£¡£½«·þÎñ¾ùºâµÄ¹æ»®µ½¶à¸öMYSQL·þÎñ¶Ë¿ÚÉÏ£º±ÈÈçapp_1 ==>; 3301 app_2 ==>; 3302...app_9 ==>; 3309¡£Ò»¸ö1GÄÚ´æµÄ»úÆ÷ÅÜÉÏ10¸öMYSQLÊǺÜÕý³£µÄ¡£ÈÃ10¸öMYSQLD³Ðµ£1000¸ö²¢·¢Á¬½ÓЧÂÊÒª±ÈÈÃ2¸öMYSQLD³Ðµ£1000¸öЧÂʸߵĶࡣµ±È»£¬ÕâÑùÒ²»á´øÀ´Ò»Ð©Ó¦Óñà³ÌÉϵĸ´ÔӶȣ»

ʹÓõ¥¶ÀµÄÊý¾Ý¿â·þÎñÆ÷£¨²»ÒªºÍǰ̨WEB·þÎñÇÀÄڴ棩£¬MYSQLÓµÓиü¶àµÄÄÚ´æ¾Í¿ÉÄÜÄÜÓÐЧµÄ½øÐнá¹û¼¯µÄ»º´æ£»

Ó¦Óþ¡Á¿Ê¹ÓÃPCONNECTºÍpolling»úÖÆ£¬ÓÃÓÚ½ÚÊ¡MYSQL·þÎñ½¨Á¢Á¬½ÓµÄ¿ªÏú£»

±íµÄºáÏò²ð·Ö£ºÈÃ×î³£±»·ÃÎʵÄ10%µÄÊý¾Ý·ÅÔÚÒ»¸öС±íÀ90%µÄÀúÊ·Êý¾Ý·ÅÔÚÒ»¸ö¹éµµ±íÀÊý¾ÝÖмäͨ¹ý¶¨ÆÚ¡°°á¼Ò¡±ºÍ¶¨ÆÚɾ³ýÎÞЧÊý¾ÝÀ´½ÚÊ¡¡£ÕâÑù¶ÔÓÚÓ¦ÓÃÀ´Ëµ×ÜÊÇÔÚ10%Êý¾ÝÖнøÐÐÑ¡Ôñ£¬±È½ÏÓÐÀûÓÚÊý¾ÝµÄ»º´æ£¬²»ÒªÖ¸ÍûMYSQLÖжԵ¥±í¼Ç¼ÊýÔÚ10Íò¼¶ÒÔÉÏ»¹ÓбȽϸߵÄЧÂÊ¡£

±íµÄ×ÝÏò²ð·Ö£¨¹ý¶É·¶»¯£©£º½«ËùÓеĶ¨³¤×ֶΣ¨char, intµÈ£©·ÅÔÚÒ»¸ö±íÀËùÓеı䳤×ֶΣ¨varchar,text,blobµÈ£©·ÅÔÚÁíÍâÒ»¸ö±íÀ2¸ö±íÖ®¼äͨ¹ýÖ÷¼ü¹ØÁª£¬ÕâÑù£¬¶¨³¤×ֶαí¿ÉÒԵõ½ºÜ´óµÄÓÅ»¯£¨ÉõÖÁ¿ÉÒÔʹÓÃHEAP±íÀàÐÍ£¬Êý¾ÝÍêÈ«ÔÚÄÚ´æÖдæÈ¡£©£¬ÕâÀïҲ˵Ã÷ÁíÍâÒ»¸öÔ­Ôò£¬¶ÔÓÚÎÒÃÇÀ´Ëµ£¬¾¡Á¿Ê¹Óö¨³¤×ֶοÉÒÔͨ¹ý¿Õ¼äµÄËðʧ»»È¡·ÃÎÊЧÂʵÄÌá¸ß¡£MYSQLÖ®ËùÒÔÖ§³Ö¶àÖÖ±íÀàÐÍ£¬Êµ¼ÊÉÏÊÇÕë¶Ô²»Í¬Ó¦ÓÃÌṩÁ˲»Í¬µÄÓÅ»¯·½Ê½£»

×ÐϸµÄ¼ì²éÓ¦ÓõÄË÷ÒýÉè¼Æ£¬ÉõÖÁÔÚ·þÎñÆô¶¯ÖмÓÈë --log-slow-queries[=file]ÓÃÓÚ¸ú×Ù·ÖÎöÓ¦ÓÃÆ¿¾±¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 3 ÌõÆÀÂÛ

  1. bone0528 ÓÚ 2011-01-18 10:56:02·¢±í:

    ѧϰÁË

  2. blue_eagle ÓÚ 2010-10-18 23:39:26·¢±í:

    ѧϰÏ£¬×î½üÓиöMYSQL·þÎñÆ÷ÐèÒª×öǨÒÆ¡£

  3. wyhkarl88 ÓÚ 2006-08-21 03:06:16·¢±í:

    лл