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

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

서버에 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. 25
번호 분류 제목 작성자 등록일 조회수
25 Shell [날짜] awk를 이용하여 unixtime의 시간 차 구하기 rootman 01-27 8221
24 Shell 쉘배열 (shell array) rootman 05-15 12755
23 Shell [날짜] date 함수로 unixtime의 시간 차 구하기 rootman 12-07 7097
22 Shell [squid] proxy 서버의 캐시 데이터 추출 rootman 03-24 6290
21 Shell [nagios] HP MSA60 P800 하드디스크 에러 검출 스크립트 rootman 06-26 10104
20 Shell [nagios] HP MSA60 P800 스카시 컨트롤러 펌웨어 체크 plugin rootman 04-16 10362
19 Shell Positional Parameter(위치변수) rootman 02-17 8725
18 Shell lynx를 통한 내부 링크와 외부 링크 return rootman 03-14 9458
17 Shell 입력 값은 값이 숫자인지 체크하기 rootman 11-13 8175
16 Shell [공유메모리] critical_create(): semget() failed 발생 시 rootman 01-30 8115
15 Shell [예제] 입력받은 문자열 대문자로 모두 변경하기 (1) rootman 09-12 7876
14 Shell 데이터 베이스 일괄(table 별도)로 전체 백업하기 (101) rootman 07-03 14198
13 Shell [최종수정 : 2005/09/12] 서버 상태 값 주기적으로 메일로 발송… 루트맨 01-27 11162
12 Shell mysql Database 테이블 모두 최적화하기 (7) rootman 03-21 15347
11 Shell [예제] 변수 할당과 치환 (17) rootman 10-14 8569
 1  2  
AND OR