shimxmemo

メモをのこすよ!

MySQL5.5.16のインストールした後はまった件

ご無沙汰ですね。

書こう書こうと思ってすっかり忘れていたのですが、しばらく前に検証の為にMySQL5.5.16のインストールしたのですが、

誤ってmysql.server startをした後に、もう一度mysql.server startをしてしまったところ

プロセスが2つある・・・だと・・・

とまるでどこかの死神代行のような反応をしてしまいました。

mysqld_safeが複数プロセス立ち上がっているのです。

そしてmysql.server stopができない、と。

 

調べてみると、どうもうちの環境だと既に立ち上がっているMySQLのプロセスのチェックが効かない事があるようです。

mysqld_safeの中でpidチェックがうまく動いていないので、mysql.server startを2回やって、プロセスが2つ立ち上がってしまったら、速やかにプロセスを殺戮せしめ、mysqld_safe内を修正しましょう。

それで良いのか、うちの環境以外で再現するか、はわかりませんがね。

 

■環境
・OS
 CentOS release 5.4 (Final) x86_64 GNU/Linux
MySQL
 MySQL5.5.16(/usr/local/mysql_testにインストール)

■いじった部分

vi /usr/local/mysql_test/bin/mysqld_safe

693行目あたり
>> if ps wwwp $PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"$MYSQLD\" > /dev/null
<< if ps wwwp $PID | grep -v " grep" | grep -v mysqld_safe | grep -- "$MYSQLD" > /dev/null

    # if ps wwwp $PID | grep -v \" grep\" | grep -v mysqld_safe | grep -- \"$MYSQLD\" > /dev/null
    if ps wwwp $PID | grep -v " grep" | grep -v mysqld_safe | grep -- "$MYSQLD" > /dev/null
    then    # The pid contains a mysqld process
      log_error "A mysqld process already exists" 
      exit 1
    fi

 あー、grepがうまくいってなかったんですね。

なるほどなるほど。