Class
- Tip&Tech
| [½ºÅ©¸³Æ®] ¸í·É¸ðµå PHP ½ºÅ©¸³Æ®·Î mysql Å×À̺í Á¡°ËÇϱâ. | |||||
| ±Û¾´ÀÌ | ³¯ Â¥ | 12-03-16 18:13 | Á¶ ȸ | 1749 | |
|---|---|---|---|---|---|
| °£ÆíURL |
http://www.phpschool.com/link/tipntech/75246
|
||||
|
### ¾´°Í : PHP ¸í·É¸ðµå ½ºÅ©¸³Æ®¸¦ ÀÌ¿ëÇØ¼ Mysql Å×À̺í Á¡°Ë
### ¾´ÀÌ : µ¶°Åû³â nonots@hanmail.net ### ¾´¶§ : 2012-03-16 1. Å×½ºÆ® ȯ°æ - OS : ¸®´ª½º CentOS 4,5,6 - Mysql : 4.x, 5.x - Php : 5.x 2. ¸ñÀû ¸®´ª½º ¼¹öÀÇ ½©¸ðµå¿¡¼ ½ÇÇàµÇ´Â php ½ºÅ©¸³Æ®¸¦ ÀÌ¿ëÇØ¼ mysql °¢ Å×À̺íµéÀÇ »óŸ¦ Á¡°ËÇÑ´Ù. »óŸ¦ Á¡°Ë ÇÑ´Ù´Â ¸»Àº, Å×À̺íÀÇ Å©±â, Row ¼ö, ¿À¹öÇìµå ¸¦ ¸¹Àº(Å«) ¼øÀ¸·Î Ãâ·ÂÇØ¼ Å×À̺íÀÌ ÃÖÀûÈ ¾ÈµÇ¾î °ø°£È°¿ëÀ²ÀÌ ¶³¾îÁö°Å³ª ½ºÆÔ °ø°ÝÀ¸·Î ¾µ¸ð¾ø´Â Row °¡ ¾öû ½×À̰ųª ÇÑ Å×À̺íÀ» ã¾Æ¼ º¸¿©ÁØ´Ù. ±×³É ¸ñ·ÏÀ» º¸¿©Áֱ⸸ÇÑ´Ù !!! .. ¸¸¾à ¿À¹öÇìµå°¡ ¸¹´Ù¸é optimize table ¸í·É¾î·Î ÃÖÀûÈÇÏ°í ¸¸¾à ½ºÆÔÀÌ ¾öû ½×ÀΰŶó¸é °Ô½Ã¹°À» »èÁ¦Çϰųª Á¢±Ù±ÇÇѵîÀ» ¼öÁ¤ÇÑ´Ù. .. ÀÌ ½ºÅ©¸³Æ®´Â ¾öû ¸¹Àº DB ¿Í Å×À̺íÀ» ¿î¿µÇÏ´Â ¼¹ö¿¡ À¯¿ëÇÒ¼ö ÀÖ´Ù. ¸¸¾à ¾ó¸¶ ¾ÈµÇ´Â Å×À̺íÀ» ¿î¿µÁßÀ̶ó¸é phpmyadmin ¸ðµå¿¡¼ °£´ÜÇÏ°Ô »ç¿ë°¡´ÉÇÏ´Â°Ô ³´´Ù. .. ÀÌ°Ç ´Ü¼øÈ÷ show table status; °á°ú °ªÀ» ÅëÇØ Ãâ·ÂµÈ µ¥ÀÌŸ¸¦ ó¸®ÇßÀ» »ÓÀÌ´Ù. 3. ¹æ¹ý ¾Æ·¡ ÷ºÎÇÑ ¼Ò½º ½ÃÀÛ, ³¡ ºÎºÐÀ» º¹»çÇØ¼ ¸®´ª½º ¼¹öÀÇ Àû´çÇÑ °÷¿¡ ÆÄÀÏ·Î ÀúÀåÇÑÈÄ ½ÇÇà ÆÛ¹Ì¼ÇÀ» ÁØ´Ù. root ±ÇÇÑÀ¸·Î¸¸ Á¢±Ù°¡´ÉÇÑ °÷¿¡ µÎ´Â °ÍÀÌ ÁÁ´Ù. ¿¹¸¦ µé¸é /root/bin/check_mysql_disk.sh ¶ó´Â À̸§À¸·Î ÀúÀåÇß´Ù¸é chmod 755 /root/bin/check_mysql_disk.sh ·Î ½ÇÇà±ÇÇÑ ÁØ´Ù. .. ±×·±ÈÄ °¢ »çÀÌÆ®¿¡ ¸Â°Ô »ó´Ü ºÎºÐ¿¡ ¼öÁ¤ÇÑ´Ù. ¿¹¸¦ µé¸é ùÁÙ #!/usr/bin/php ¿Í °°ÀÌ µÈ ºÎºÐÀ» ¾î¶² ¼¹ö´Â ÄÄÆÄÀÏÇØ¼ php ¸í·É¾î À§Ä¡°¡ /usr/local/bin/php µî°ú °°ÀÌ µÇ¾î ÀÖ´Ù¸é #!/usr/local/bin/php ·Î ¼öÁ¤ÇÑ´Ù. .. ±×¸®°í mysql root ºñ¹øÀ» Á÷Á¢ Àû¾î¼ »ç¿ëÇÏ·Á¸é >> //$mysql_root_pwd="kqka##091";//¸¸¾à mysql root ºñ¹øÀ» Á÷Á¢ ³Ö´Â´Ù¸é ÀÌ ¶óÀÎ »ç¿ë ÀÌ ¶óÀÎÀ» ÁÖ¼®Ç®°í mysql_root ºñ¹øÀÌ º°µµ ÆÄÀÏ $r_file ¿¡ Àû¾î ³Ö¾ú´Ù¸é >> $r_file = "/root/bin/.mysqlinfo"; // mysql root ºñ¹Ð¹øÈ£ ´Þ¶û ÀûÈù ÆÄÀÏ >> $mysql_root_pwd=`cat $r_file`; // À§ ´Þ¶û ÀûÈù ÆÄÀÏ ºÒ·¯¿Í »ç¿ëÇÏ·Á¸é ÀÌ ¶óÀÎ »ç¿ë ¿Í °°ÀÌ ºÒ·¯¿À°Ô ÇÑ´Ù. 4. ½ÇÇ࿹ ÀÏ´Ü Àμö ¾øÀÌ ±×³É ½ÇÇàÇϸé 1,2,3 Áß¿¡ Çϳª¸¦ Àμö·Î ³Ñ±â¶ó°í ³ª¿Â´Ù. ¿©±â¼ ¿À¹öÇìµå Å« ÆÄÀϵéÀ» º¸·Á¸é 1 À» ³Ö´Â´Ù [root@mywww bin]# ./check_mysql_disk.sh ## »ç¿ë¹ý :: ¸í·É¾î Àμö·Î 1,2,3 Áß¿¡ Çϳª¸¦ ³Ñ°Ü¾ß ÇÔ. .. ¿À¹öÇìµå ¸¹Àº Å×ÀÌºí ¼ø¼·Î º¸·Á¸é : ./check_mysql_disk.sh 1 µ¥ÀÌŸ Å©±â Å« Å×ÀÌºí ¼ø¼·Î º¸·Á¸é : ./check_mysql_disk.sh 2 µ¥ÀÌŸ Row ¸¹Àº Å×ÀÌºí ¼ø¼·Î º¸·Á¸é : ./check_mysql_disk.sh 3 [root@mywww bin]# ./check_mysql_disk.sh 1 ### ¿À¹öÇìµå ¸¹Àº ¼ø¼·Î Ãâ·Â ### ¿À¹öÇìµå: 25,217,520 Àüüũ±â: 25,508,732 Row¼ö: 171 ::: [jura_db : zetyx_board_j2] ¿À¹öÇìµå: 21,730,568 Àüüũ±â: 22,058,496 Row¼ö: 90 ::: [jc_db : zetyx_board_propose_01] ¿À¹öÇìµå: 11,366,084 Àüüũ±â: 11,516,944 Row¼ö: 77 ::: [bang_db : g4_write_pds] ... À§¿¡¼ jura_db ¶ó´Â DB ÀÇ zetyz_board_12 ¶ó´Â Å×À̺íÀÌ ¿À¹öÇìµå°¡ 25 ¸Þ°¡°¡ ³Ñ´Â´Ù. ÀÌ°É ÃÖÀûÈ ÇÏ·Á¸é optimize table ¸í·É¾î·Î ÃÖÀûÈ ÇÏ¸é µÈ´Ù. 5. ¸¶¹«¸® ¾à°£ÀÌ¶óµµ µµ¿òÀÌ µÇ±æ.. ¾ÈµÇ¸é µÉ ¶§±îÁö.. == ÀÚ¸£±â ½ÃÀÛ ================================ #!/usr/bin/php <?php error_reporting(E_ALL ^ E_NOTICE); //$mysql_root_pwd="kqka##091";//¸¸¾à mysql root ºñ¹øÀ» Á÷Á¢ ³Ö´Â´Ù¸é ÀÌ ¶óÀÎ »ç¿ë $r_file = "/root/bin/.mysqlinfo"; // mysql root ºñ¹Ð¹øÈ£ ´Þ¶û ÀûÈù ÆÄÀÏ $mysql_root_pwd=`cat $r_file`; // À§ ´Þ¶û ÀûÈù ÆÄÀÏ ºÒ·¯¿Í »ç¿ëÇÏ·Á¸é ÀÌ ¶óÀÎ »ç¿ë $data_free_limit = 1000000; // Å×ÀÌºíº° ¿À¹öÇìµå Ãâ·Â±âÁØ(byte) $data_size_limit = 10000000; // Å×ÀÌºíº° µ¥ÀÌŸ Å©±â Ãâ·Â ±âÁØ(byte) $data_rows_limit = 100000; // Å×ÀÌºíº° µ¥ÀÌŸ °¹¼ö(row) Ãâ·Â ±âÁØ if ( $_SERVER['argv'][1] == ''){ die(" ## »ç¿ë¹ý :: ¸í·É¾î Àμö·Î 1,2,3 Áß¿¡ Çϳª¸¦ ³Ñ°Ü¾ß ÇÔ. .. ¿À¹öÇìµå ¸¹Àº Å×ÀÌºí ¼ø¼·Î º¸·Á¸é : ". $_SERVER['argv'][0] ." 1 µ¥ÀÌŸ Å©±â Å« Å×ÀÌºí ¼ø¼·Î º¸·Á¸é : ". $_SERVER['argv'][0] ." 2 µ¥ÀÌŸ Row ¸¹Àº Å×ÀÌºí ¼ø¼·Î º¸·Á¸é : ". $_SERVER['argv'][0] ." 3 \n"); } if ( $_SERVER['argv'][1] == '2'){ $coln = 'total'; $title = "µ¥ÀÌŸ Å©±â ¼ø¼·Î Ãâ·Â"; }else if ( $_SERVER['argv'][1] == '3'){ $coln = 'Rows'; $title = "µ¥ÀÌŸ Row ¸¹Àº ¼ø¼·Î Ãâ·Â"; }else{ $coln = 'Data_free'; $title = "¿À¹öÇìµå ¸¹Àº ¼ø¼·Î Ãâ·Â"; } echo "### $title ###\n\n"; //print_r(array_sort($people, 'age', SORT_DESC)); // Sort by oldest first function array_sort($array, $on, $order=SORT_ASC) { $new_array = array(); $sortable_array = array(); if (count($array) > 0) { foreach ($array as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { if ($k2 == $on) { $sortable_array[$k] = $v2; } } } else { $sortable_array[$k] = $v; } } switch ($order) { case SORT_ASC: asort($sortable_array); break; case SORT_DESC: arsort($sortable_array); break; } foreach ($sortable_array as $k => $v) { $new_array[$k] = $array[$k]; } } return $new_array; } $conn = mysql_connect("localhost","root",trim($mysql_root_pwd)); mysql_select_db("mysql"); $result = mysql_query("select Db from db"); while($arr = mysql_fetch_array($result)) { $dbarr[] = $arr['Db']; } foreach($dbarr as $k){ #$result = mysql_query("SHOW TABLE STATUS FROM $k where Data_free > 100000 or Data_length > 100000;"); #$result = mysql_query("SHOW TABLE STATUS FROM $k where Data_free > $data_free_limit;"); $result = mysql_query("SHOW TABLE STATUS FROM $k"); if ( $result ){ while($array = mysql_fetch_array($result,MYSQL_ASSOC)){ $array['total'] = $array[Data_length]+$array[Index_length]; $array['Dbname'] = $k; if ( $coln == 'Rows' ){ if ( $array[Rows] > $data_rows_limit ) $dinfo[] = $array; }elseif ( $coln == 'total' ){ if ( $array[total] > $data_size_limit ) $dinfo[] = $array; }else{ if ( $array[Data_free] > $data_free_limit ) $dinfo[] = $array; } } } } $dinfo2=array_sort($dinfo,$coln,SORT_DESC); foreach($dinfo2 as $vv){ $total=$data_free=$rows=''; $total = number_format($vv['total']); $data_free = number_format($vv['Data_free']); $rows = number_format($vv['Rows']); echo "¿À¹öÇìµå: ".$data_free."\tÀüüũ±â: ".$total."\tRow¼ö: ".$rows."\t:::\t"; echo "[".$vv['Dbname']." : ".$vv[Name]."] \n\n"; } mysql_close(); ?> == ÀÚ¸£±â ³¡ ================================ |
|||||
Àüü´ñ±Û¼ö 0
12345678910


