리눅스, 자료실, 성경검색, 추억의게임, 고전게임, 오락실게임, rootman, http://www.rootman.co.kr
* 35.172.201.102 *
| Home | Profile | Linux | 자료실 | zabbix | Mysql 5.6 | 갤러리 | 성경검색 | 해피니스 | 자유게시판 | 게시물검색 | L | O | R |    

 
[Shell] mysql Database 테이블 모두 최적화하기
 작성자 : rootman
Date : 2004-03-21 15:48  |  Hit : 14,488  

서버에 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 "====================================================================================";


매니아 (04-04-16 10:24)
 
  그럼 매일 자동으로 구동되는지요.
아니면 수동으로 해야되는 알고 싶어요..
알마니 (04-04-16 17:30)
 
  이거 조은데 리모트 DB에 대해서도 작동되게 해주세요
-h DB호스트 를 추가햇더니 에러가 나네요
그러니까 이 쉘은 리눅스에서 돌리구 DB는 다른서버구요
이런경우에는 어떻게 해야할지???
써니 (04-06-16 02:39)
 
  테이블명을 가져올때 헤더부분인 Tables_in_DB명 부분이 다 나오길래 조금 바꿨습니다.
안쪽에 있는 do loop에 if 문 추가요.

    do
        if [ ${TABLE_for}  != "Tables_in_"${DB_for} ]; then
          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;
        fi;
    done
여우 (04-06-22 09:30)
 
  우아.. 감사히잘쓰겟습니다..... 좋은데요...
 
 

Total. 645
번호 분류 제목 작성자 등록일 조회수
645 기초강좌 NFS server unable to open connection to tcp6/udp6 networks rootman 09-27 2409
644 php [php] mssql ms-sql 한글 변환 끄적임.. 정리 rootman 03-29 3485
643 기초강좌 java vim 에서 자바 환경 만들기 rootman 02-16 2598
642 삭제예정 [xencenter] xenserver tool 설치 rootman 08-24 3664
641 mysql [mysql] Creating a File-Per-Table Tablespace Outside the Dat… rootman 08-03 3856
640 기초강좌 Centos Xwindow 설치 rootman 06-16 4736
639 php [php] highlight 함수 rootman 04-01 4591
638 qmail [qmail] qmail-scanner에 filtering 된 이메일 처리 rootman 02-14 5003
637 Shell [날짜] awk를 이용하여 unixtime의 시간 차 구하기 rootman 01-27 5984
636 기초강좌 centos에 그놈(gnome) 설치하기 rootman 01-10 5932
635 쉘(awk) [awk] shell 변수 사용하기 rootman 12-27 5534
634 기초강좌 서버 캐시 메모리 초기화하기 (drop_caches) rootman 12-11 6604
633 windows tips 그리드 제거 배치 스크립트 rootman 11-28 6171
632 기초강좌 패스워드 lockgin control rootman 09-06 4
631 windows tips win7 자동 로그인 설정하기 rootman 08-18 6261
 1  2  3  4  5  6  7  8  9  10    
AND OR