본문 바로가기

Linux/shell script

mysql repair check 스크립트

출처 : http://blog.lovetonight.net/155


#/bin/sh

MYSQL_ID="root"
MYSQL_PWD="okran@naver"
MYSQL_HOST=""

MYSQL_BIN="/usr/local/mysql/bin/mysql"
DBD_NAME="mysqld"

SUCC_CNT="0"
FAIL_CNT="0"
REPAIR_SUCC_CNT="0"
REPAIR_FAIL_CNT="0"

if [ "$MYSQL_PWD" != '' ]
then
    if [ `ps -C "$DBD_NAME" -o pid=` != '' ]
then
        MYSQL_BIN="$MYSQL_BIN -u $MYSQL_ID -p$MYSQL_PWD"
    fi
fi

for INF in $( $MYSQL_BIN -e "show databases"|grep -v "Database" |grep -v "lost+found" | grep -v "information_schema"); do
    echo -en "\033[1;37m<<<< DATABASE : $INF CHECK START >>>>\033[0m\r\n";
    sleep 1;
    for TBNAME in $( $MYSQL_BIN $INF -e "show tables" |grep -v "Tables_in_");
do
    echo -en "    *TABLE CHK: $TBNAME";


CHKRET=`$MYSQL_BIN $INF -e "check table $TBNAME" |grep "$TBNAME" | sed "s/\t//g"`
REPAIR_RUN=`$MYSQL_BIN $INF -e "repair table $TBNAME" |grep "$TBNAME" |sed "s/\t//g"`


if [ `echo $CHKRET | grep "check status OK" | wc -c` != 0 ]
then
    echo -en "\t$INF.$TBNAME\tCHECK STATUS \r\n\t\t\t\t\t\t\t\t[    \033[1;32mOK\033[0m    ]\r\n";
    SUCC_CNT=`expr $SUCC_CNT + 1`
else
    echo -en "\t$INF.$TBNAME\tCHECK STATUS \t\t\t[ \033[1;31mFAILED\033[0m ]\r\n";
    echo -en "\t * ERRMSG : \033[1;31m$CHKRET\033[0m\r\n\r\n";
    FAIL_CNT=`expr $FAIL_CNT + 1`
    sleep 1;


echo -en "\t * \033[1;31m[$TBNAME] Repair Processing is now...  \033[1;31m$CHKRET\033[0m\r\n\r\n";



if [ `echo $REPAIR_RUN | grep " repair status OK" | wc -c` != 0 ]
    then
        echo -en "\033[1;37m\t * $INF.$TBNAME\t REPAIR PROCESS\033[0m\r\n\t\t\t\t\t\t\t\t[    \033[1;32mOK\033[0m ]\r\n";
        REPAIR_SUCC_CNT=`expr $REPAIR_SUCC_CNT + 1`
    else
        echo -en "\t * $INF.$TBNAME\t REPAIR PROCESS \t\t\t [ \033[1;31mFAILED\033[0m ]\r\n\r\n";
        echo -en "\t * ERRMSG : \033[1;31m$CHKRET\033[0m\r\n\r\n";
        REPAIR_FAIL_CNT=`expr $REPAIR_FAIL_CNT + 1`
        sleep 1;
    fi   
fi
done;

echo -en "\033[1;37m<<<< DATABASE : $INF CHECK END >>>>\033[0m\r\n";
        echo "";
        echo "";
done



echo "CHECK SUCCESS TABLE: $SUCC_CNT";
echo "CHECK FAILD TABLE: $FAIL_CNT";
echo "REPAIR SUCCESS TABLE: $REPAIR_SUCC_CNT";
echo "REPAIR FAILD TABLE: $REPAIR_FAIL_CNT";