웹솔루션개발 22년 노하우! 해피CGI의 모든것

[해피CGI][cgimall][팁] mysql Database 테이블 모두 최적화하기 본문

웹프로그램밍 자료실/알짜자료 골드팁

[해피CGI][cgimall][팁] mysql Database 테이블 모두 최적화하기

해피CGI윤실장 2017. 1. 9. 09:09

http://www.rootman.co.kr/

 

http://www.rootman.co.kr/bbs/view.php?id=linux&page=1&sn1=&divpage=1&category=9&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=1243

 

 

서버에 Mysql 데이터 양이 많이 쌓이고, 쿼리 작업이 활발히 일어날경우,
이에 따른 db 의 공간 부담율도 커지게 됩니다.

이에 따라, 양이 많을 경우 하나하나 최적화를 해줄수도 없고,
아래와 같이 간략하게 쉘을 돌려봤습니다.
전엔 php 쉘로 돌렸는데 다소 느린것 같더군요.
bash 로 변경해 봤습니다.

혹, 필요하신분들 있으시면 가져다가, 쓰세요.
화일명으로 저장후 실행권한 주시고, /etc/cron.daily 에 넣어 주세요.
하루에 한번씩 돌리면 좋을듯 하네요.

 

조금이라도 도움이 되었으면 하는 바램으로....

-----------------------------------------------------------------

#!/bin/sh
# 2004/03/20
# http://www.rootman.co.kr
# 제목 : mysql Database 테이블 모두 최적화하기
# 변경사항 : mysql root 변경
# --------------------------------------------------
#
DB_cnt=0;
DB_pass="루트패스워드"
Total_Table=0;
DB_str=`mysql -u root -p${DB_pass} -e"show databases"`;
for DB_for in ${DB_str}
do
  if [ ${DB_for}  != "Database" ]; then
     TABLE_cnt=0;
     Table_str=`mysql -u root -p${DB_pass} -e"show tables" ${DB_for}`;
     for TABLE_for in ${Table_str}
     do
        Op_Str=`mysql -u root -p${DB_pass} -e"optimize table $TABLE_for" ${DB_for}`;
        echo " - DB명 : ${DB_for} --> ${TABLE_for} ";
        let TABLE_cnt=TABLE_cnt+1;
     done
     echo "------------------------------------------> 테이블명 : ${TABLE_cnt} 최적화완료.";
     let Total_Table=Total_Table+${TABLE_cnt};
     sleep 1;
     let DB_cnt=DB_cnt+1;
  fi;
done
echo "====================================================================================";
echo "- 호스트명 : `hostname` 에 대한 DB ${DB_cnt}개, 토탈테이블 ${Total_Table} 최적화 완료.";
echo "====================================================================================";

 

자료출처 : http://www.phpschool.com

 

홈페이지바로가기 

Comments