ioerror

MySQL 최적화(Optimize) 및 복구(refair) 자동화 쉘스크립트 본문

DataBase

MySQL 최적화(Optimize) 및 복구(refair) 자동화 쉘스크립트...

반응형

사이트가 왜 느려질까?

서버 장비, 네트워크, 등 많은 원인이 있겠지만 대체로 데이터베이스에 원인이 있다.

slow query를 유발하는 SQL 문이나, 인덱싱이 안되어 있는 테이블 등으로 인해 데이터가 쌓이다 보면 느려지게 마련이다.

그럴 때는 테이블들을 최적화해줘야 한다.

전체 데이터베이스의 테이블들을 최적화 하고, 스케쥴링하는 방법을 구글링 해서 알아보고 적용해봤다.

1. MySQL 최적화 쉘 스크립트

1) optimize.sh 파일을 생성한다.

$ vi optimize.sh

2) optimize.sh 파일 내용

#!/bin/sh

# 로그 파일명 설정
# 오늘 날짜
today=`date '+%Y%m%d'`

# 4일 이전 날짜(삭제 대상)
lastday=`date --date '4 days ago' +"%Y%m%d"`

# 오늘 날짜의 로그 파일명
newfile=$today".log"
# 4일 이전 날짜의 로그 파일명
oldfile=$lastday".log"

# 4일 이전 로그는 삭제 한다.
rm -rf "/logs/"$oldfile

# mysqlcheck를 통해 테이블에 오류가 있을 경우 자동 복구와 최적화를 실시하고 로그 파일에 저장한다.
# 가급적 mysqlcheck 파일의 경로를 다 적어 준다.(/usr/local/mysql/bin/mysqlcheck)
/usr/local/mysql/bin/mysqlcheck -uroot -p{비밀번호} --auto-repair --optimize --all-database > "/logs/$newfile"

--auto-repair : 테이블에 오류가 있으면 자동으로 복고

--optimize : 테이블 최적화

--all-database : 전체 데이터베이스

 

3) 실행 권한을 추가한다.

$ chmod +x optimize.sh

 

2. crontab 스케줄링에 등록하기

1) 크론탭 파일을 연다.

$ vi /etc/crontab

2) 아래의 스케쥴 내용을 추가하고 저장한다.

일정은 원하는 대로 설정한다.

#    /------ 분
#   / /----- 시 
#  / / /---- 월
# / / / /--- 일
#/ / / / /-- 요일 (0-7) 0=>일,월,화,수,목,금,토,7=>일
0 1 * * * root /home/users/optimize.sh

 

반응형
Comments