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.