MySQL: Repair & Optimize all Tables in all Databases
전체 DB 체크
mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
특정 DB 만 체크
mysqlcheck -u root -p --auto-repair [디비명]
전체 DB 체크할때 아래 오류가 발생하면 --check 옵션은 빼고 실행
Error: mysqlcheck doesn't support multiple contradicting commands.
============================================================================================
mysqlcheck 유틸리티 사용법(analyze, optimize, repair)
mysqlcheck 유틸리티 사용법
cost 베이스 DB에서 DB전체를 한번에 analyze, optimize, repair 하기 위한 유틸리티 입니다.
파일위치 : mysql/bin
----------------------------------------------------
전체 체크 및 자동 복구
mysqlcheck -Aa --auto-repair -u root -p
mysqlcheck -Ao --auto-repair -u root -p
----------------------------------------------------
-A, --all-databases
-a, --analyze
-o, --optimize
-P 포트번호
----------------------------------------------------
특정 데이터베이스만 체크 및 자동 복구
mysqlcheck --auto-repair -u root -p 데이터베이스명
특정 테이블만 체크 및 자동 복구
mysqlcheck --auto-repair -u root -p 데이터베이스명 테이블명
명령어 수정하여 사용하기
mysqlrepair = mysqlcheck --repair
mysqlanalyze = mysqlcheck --analyze
mysqloptimize = mysqlcheck --optimize
mysql에 접속하여 개별적으로 하는 방법
mysql> use 데이터베이스명;
mysql> show tables;
mysql> check table 테이블명;
mysql> repair table 테이블명;
mysql> analyze table 테이블명;
mysql> optimize table 테이블명;
----------------------------------------------------
##########################
OPTIMIZED table script PHP
##########################
$db = 'database_name';
$tables = mysql_list_tables($db);
while (list($table)name) = mysql_fetch_array($tables)) {
$sql = "OPTIMIZE TABLE $table_name";
mysql_query($sql) or exit(mysql_error());
}
================================================================================
$backup_db = array("db1","db2")
$optimize =1;
foreach($backup_db AS $dbName)
{
echo "\n========== $dbName ==========\n";
// DB
$cmd="mysql -uroot -p".DB_PW." $dbName -e\"show tables\" ";
exec($cmd,$tableArr);
// 테이블
foreach($tableArr As $val)
{
if(strstr($val,"+")) continue;
if(strstr($val,"Tables_in_".$dbName)) continue;
if(ereg("([a-zA-Z0-9_])+",$val,$regs))
{
$tableName=trim($regs[0]);
}
else
continue;
// 필요 없는 건 걸러내고 테이블 이름만 취한다.
if($optimize)
{
$opt_exe = "mysql -uroot -p".DB_PW." $dbName -e\"optimize table device.$tableName\" ";
exec($opt_exe,$output);
}
$dateYMD= date("Y-m-d");
$last_line=system("mysqldump -uroot -p".DB_PW." --extended-insert=FALSE --add-drop-table --create-options --disable-keys --add-locks --skip-opt --no-create-db --default-character-set=euckr --set-charset -n -t \"$dbName\" $tableName > $backupDir/$dateYMD/{$tableName}.sql");
} //전체루프
00 2 * * * root /usr/local/mysql/bin/mysqlcheck -uroot -p암호 -rao --all-database --auto-repair > /dev/null 2 > &1
으로 하면 2시에 인덱스 복구, 최적화,분석 까지 --auto-repair 면 잘못 된 테이블 복구 까지 자동으로 해준다.
'IT 인터넷' 카테고리의 다른 글
windows 7,10,11 아이콘 깨짐 복구 (1) | 2024.10.03 |
---|---|
GIT 기본 사용방법 (0) | 2024.10.02 |
[리눅스] 아파치 SSL 로 구동시 키 비밀번호 없애기 (1) | 2024.10.02 |
[리눅스] su 명령을 특정 사용자만 사용 할 수 있게 하기 (0) | 2024.10.01 |
hotmail 스팸차단시 정상 신고방법 (0) | 2024.10.01 |