DBA의 입장에서는 자주자주 점검을 해서 장애를 예방하거나 사소한 용량부족사태(?)라도 막는게 중요하다. 왜냐하면 장애나면 자다가도 나가서 조치를 해야할 수도 있기 때문이다.
내 소중한 취침시간 지켜...
서론이 길었네.. 여튼 일일점검 스크립트 만든 것을 공유하려합니다.
시스템 담당자에게 Linux 명령어 도움을 조금아닌 많이 받아 작성하였습니다!
vi start_check.sh
---------------
D=`/bin/date +%y%m%d%H%M` --날짜를 변수 선언
sh /home/mysql/DBA/daily_check/daily_check.sh >> /home/mysql/DBA/daily_check/daily_$D.log
echo " " >> /home/mysql/DBA/daily_check/daily_$D.log
##저는 log파일을 cat으로 볼때 바로 딱 붙는게 싫어서 echo명령어를 통하여 한줄을 띄어뒀습니다!
매일매일 돌리는 스크립트를 저는 start_check.sh를 통하여 daily_check.sh를 돌렸습니다.
나누지 말고 1개로 하는게 편하지않냐라는 질문이 있을 수도 있는데, DB 크기 조회하는 sql파일을 따로 돌려야 하기 때문에 script도 지저분해질거 같아서 따로 분리하였습니다.
vi daily_check.sh
----------------------
USERID="root"
USERPW="root" --자신의 dba권한이 있는 user와 pw로 설정해도 됩니다!
DATE=`date +%y-%m-%d -d -1day` --start_check에 있는 D와는 다른 역할
echo""
echo"=========================================="
echo"database size check"
echo"=========================================="
mysql -u$USERID -p$USERPW [-h hostip -P port] < /home/mysql/DBA/daily_check/check.sql
##check.sql은 제 velog 용량점검 쿼리 참조!
echo""
echo"=========================================="
echo"Master Node check"
echo"=========================================="
mysql -u$USERID -p$USERPW [-h hostip -P port] -e 'show master status\G;'
## binlog 번호 확인
echo""
echo"=========================================="
echo"Slave Node check"
echo"=========================================="
mysql -u$USERID -p$USERPW [-h hostip -P port] -e 'show slave status\G;'
## master node와 binlog 번호 비교
## Slave_IO_Running, Slave_SQL_Running = yes 여야 maxscale정상
## Last_SQL_Error, Last_Error 확인
echo""
echo"=========================================="
echo"Filesystem size check"
echo"=========================================="
df -h /log /data /backup
echo""
echo"=========================================="
echo"BINLOG check"
echo"=========================================="
ls -al /log/maria_log | grep "maria-bin*"
echo `ls -al /log/maria_log | grep "maria-bin*" | wc -l` "rows selected"
echo""
echo"=========================================="
echo"Error check"
echo"=========================================="
cat /log/maria_log/maria-err.log | grep "${DATE}" | egrep -i 'error|warning'
echo `cat /log/maria_log/maria-err.log | grep "${DATE}" | egrep -i 'error|warning' | wc -l` "rows selected"
echo""
echo"=========================================="
echo"Backup check"
echo"=========================================="
ls -al /backup | grep "Backup"
echo `ls -al /backup | grep "Backup" | wc -l` "rows selected"
이렇게 해두고 안돌리면 안되니 매일매일 돌 수 있도록 crontab에 등록!
$ crontab -e
#daily 08:30
30 8 * * * sh start_check.sh >> daily_$(date "%y%m%d).log
매일매일 log확인하며 점검!
이상 mariadb 일일 점검 스크립트를 끄적여봤습니다.
수정이 필요할 시 수정하여 쓰세요~
감사합니다.