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 프로세스는 죽지 않았다.

mysqld의 잘 못된 옵션으로 인한 다운증상 테스트

mysqld의 잘 못된 옵션으로 인한 다운증상 테스트”에 대한 1개의 생각

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.

Solve : *
26 × 30 =