root ]# iptables -A INPUT -s "내아이피" -j ACCEPT root ]# iptables -A INPUT -j DROP
이제 디비체크로 복구를 해보자..
root ]# mysqlcheck -u root -p -r -o -A ( 혹은 -A대신 특정 디비명이나 테이블명 ) > result
mysqlcheck로 나온 결과들중 Table is already up to date 따위들이 뜬다면
myisamchk나 직접 디비접속을 해서 repair tables 로 처리해야한다.
만약 많이들 있다면 간단히 스크립트를 짜준다.
myisamchk를 사용할 경우 디비를 일단 내린후 다음 스크립트를 적절히 이용하여 복구한다.
#!/bin/bash
MYSQLHOME=/usr/local/mysql/var // mysql디비가 있는 디렉토리. // Src라는 변수에 "Table is already up to date" 라는 메시지가 뜬 테이블들을 적당한 // 형식으로 배열로 집어넣는다. ex. dbname/tablename.MYI 식.. // 참고로 첫 awk에서 -F\ 뒤에 붙는건 공백이다...놓치지말자.. Src=(`grep "Table is already up to date" result | grep -v mysql | grep -v error | awk -F\ '{print $1 }' | awk -F. '{print $1"/"$2".MYI"}'`)
cd $MYSQLHOME
for ( ( i = 0; i <= ${#Src[@]}; i++ ) ) // 배열 개수만큼 i 증가루프..(C식 배쉬스크립트) do myisamchk -r -o ${Src[$i]} // 배열을 쭉 읽어가면서 myisamchk로 복구한다. done
대략 위의 스크립트면 디비복구를 마구마구 해댄다.
mysql에 직접 접속해 repair tables 를 날리고 싶다면 노가다 반, 자동화 반의 작업이 필요하다.