1. 현상
/etc/init.d/mysqld start 로 mysql 데몬이 올라가는 도중에 bin/mysqld --vesrion 과 같이 잘 못된(오타) 옵션으로 실행 파일을
구동하다가 mysql이 shutdown 되는 현상이 발생된 사례가 발생하였다. - versrion (철자가 틀렸다)
mysql-advanced-5.6.16 64bit 바이너리 버전에서 발생을 하였으며 oracle에 문의 결과 해당 문제는 테스트상 발견되지 않으며 보고된 bug도 없다고 한다. 그래서 간단한 스크립트를 짜서 아래처럼 돌렸다.
이 것을 테스트 하려면 쉘 창을 3개 띄우고 진행하면 된다.
2. 테스트 하기
2.1. 쉘1 에서 실행하는 스크립트
#!/bin/bash
WhileNum=300
while [ $WhileNum -ge 1 ]
do
/etc/init.d/mysqld start
sleep 2 ;
WhileNum=$((WhileNum-1))
echo "Check count $WhileNum"
ps aux | grep mysqld | egrep -v grep >& /dev/null
if [ $? == "1" ]; then
CurrTime2=`date +%Y-%m-%d"_"%T`
echo "$CurrTime2 mysqld process not found." >> /tmp/mycheck.log
fi
/etc/init.d/mysqld stop ; clear 1 ; sleep 1 ; done;
if [ $WhileNum == "0" ]; then
echo "mycheck end."
exit
fi
done ;
2.2. 쉘2 에서 실행
$ while :; do /app/mysql/bin/mysqld --vesrion ; sleep 1 ; clear ; done;
2.3. 쉘3 에서 실행
$ watch -d -n1 "cat /tmp/mycheck.log"
2.4. 쉘4 의 mycheck.sh가 제대로 동작하는지 에서 mysqld가 start된 후 바로 아래처럼 mysqld를 강제 종료
$ killall -9 mysqld ; killall -9 mysqld_safe
mysqld 프로세스가 죽으면 쉘3) 에서 아래와 같은 로그가 찍힌다.
$ cat /tmp/mycheck.log Tue Apr 15 14:21:57 2014
2014-04-15_14:18:31 mysqld process not found
3. 테스트 결과
mysqld를 300번 start, stop 하면서 잘못된 --vesrion 옵션 파라미터를 주고 mysqld를 실행하여도 mysqld 프로세스는 죽지 않았다.
If some one needs expert view concerning blogging and site-building then i suggest him/her to pay a visit this blog, Keep up the nice work.