본문
MySQL Check & Repair 유틸리티
1. 사용
[root@ihelpers bin]# php -q mysqlchecker.php -c analysis
총 테이블 개수 : 80 개
AD_T : OK
AFF_T : OK
CLOSE_T : OK
CODE_T : OK
CONFIG_T : OK
COUNTRY_T : OK
ENV_BROWSER_T : OK
ENV_COUNTRY_T : OK
2. Cron
30 04 * * * /usr/local/bin/php -q /data1/wwwroot/analysis/bin/mysqlchecker.php -c analysis | mail -s "Analysis MySQL Check" smson@ihelpers.co.kr
3. 소스
<?
/*///////////////////////////////////////////////////////////////
프로그램명 : mysqlchecker
버전 : 0.9
작성자 : 손상모
최초작성일 : 2006.05.20
*** 설명 ***
MySQL 점검 및 수정 유틸리티
*** 변경 내역 ***
없슴
/////////////////////////////////////////////////////////////////*/
set_time_limit(0);
if ($argc < 3 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
echo "Usage : mysqlchecker.php -a <database>
mysqlchecker.php [options] -c <database>
mysqlchecker.php [options] -r <database>
-c <database> 데이타베이스 점검
-r <database> 데이타베이스 점검 및 수정
-f 빠르게 점검하기
";
exit;
} else {
$ARGVCMDS = array("a","r");
$ARGVOPTIONS = array();
$options = array();
$args = array();
for($i=1;$i<$argc;$i++){
if(substr($argv[$i],0,1) == "-"){
$o = substr($argv[$i],1,1);
if(in_array($o,$ARGVCMDS)){
$cmd = $o;
} else {
array_push($options,$o);
}
} else {
array_push($args,$argv[$i]);
}
}
}
$C_HOSTNAME = "210.116.***.***";
$C_UID = "wsos";
$C_PWD = "*****";
$C_DATABASE = $args[0];
$fast = false;
$repair = false;
if($cmd == "r") $repair = true;
if(in_array("f",$options)) $fast = true;
// Database 연결
$conn = mysql_connect($C_HOSTNAME, $C_UID, $C_PWD) or die ("Connection Error :" . mysql_error() );
mysql_select_db($C_DATABASE,$conn) or die ("Database Use Error : " . mysql_error() );
$sql = "
SHOW TABLES
";
$rsTable = mysql_query($sql,$conn) or die(mysql_errno()." : ". mysql_error());
printf("총 테이블 개수 : %d 개\n\n",mysql_num_rows($rsTable));
if($fast) $checktype = "FAST";
while (list($table) = mysql_fetch_row($rsTable)){
printf("%s : ",$table);
$isOK = false;
$msg = "";
$sql = "CHECK TABLE `$table` $checktype";
$result = mysql_query($sql,$conn) or die(mysql_errno()." : ". mysql_error());
if($row = mysql_fetch_assoc($result)){
mysql_data_seek($result, mysql_num_rows($result)-1);
if($row["Msg_type"] != 'status'){
$isOK = false;
$msg = $row["Msg_text"];
} else {
$isOK = true;
if($row["Msg_text"] != "OK"){
$msg = sprintf("OK (%s)",$row["Msg_text"]);
} else {
$msg = $row["Msg_text"];
}
}
} else {
$isOK = false;
$msg = "FAIL";
}
printf("%s\n",$msg);
if($repair && !$isOK){
$sql = "REPAIR TABLE `$table`";
printf("%s : ",$sql);
$repair = "";
$reRepair = mysql_query($sql,$conn) or die(mysql_errno()." : ". mysql_error());
if($row = mysql_fetch_assoc($reRepair)){
mysql_data_seek($reRepair, mysql_num_rows($reRepair)-1);
$repair = $row["Msg_text"];
} else {
$repair = "FAIL";
}
printf("%s\n",$repair);
}
}
?>
관련링크
- http://jiny.kr/jiny/352 1070회 연결
댓글목록
등록된 댓글이 없습니다.