MySQLの再起動をするときはいつもcondrestartするだけだったのだけど、ふと気になって/etc/init.d/mysqldでコマンドを表示してみたら見たこと無いのがいくつか混じってたのでメモっておくテスト。基本的には、/etc/init.d/mysqldを読んだだけ。

起動コマンドの確認

# /etc/init.d/mysqld
Usage: /etc/init.d/mysqld {start|stop|status|restart|condrestart|try-restart|reload|force-reload|startsos}

try-restartとか、force-reload、startsosは他のアプリケーションでは見かけない。


起動コマンドの説明

start

mysqldプロセスを開始する

stop

mysqldプロセスを停止する

status

mysqldプロセスの起動状況を確認する

restart

mysqldプロセスの起動状況によらず以下を実行する

  • stop
  • start

condrestart

mysqldプロセスが起動しているときのみ以下を実行する。

  • stop
  • start

つまり停止状態で行っても起動しない

try-restart

condrestartと同じ

reload

設定の再読み込み。

force-reload

「強制的に設定を再読み込み」ってどういうことだろうと思ったら、restartと同じ。

startsos

オプション「--skip-grant-tables」「--skip-networking」を付けてmysqldプロセスを起動する。
オプションの意味は、以下の通り。

  • --skip-grant-tables … どんなユーザでも接続可能な状態で起動
  • --skip-networking … ローカル接続のみ可能な状態で起動

つまりログインできなくなったときにこれで再起動すればとりあえず管理者権限でログインできる、その代わり外部サーバからは接続できなくなると。まさにSOS。
起動オプションなので、元の状態に戻すにはプロセスの再起動が必要。



知らなかった点、誤解してた点。

  • try-restartはcondrestartと同じ
  • force-reloadはrestartと同じ
  • startsosっていう緊急時用コマンドがある
    • でも間違いなくサービスはダウン(1つのサーバで完結していない限り)
  • MySQLの話じゃないけど、gracefulとcondrestartは同じなんだって勘違いしてた。gracefulがきちんと子プロセスの終了を確認するのに対して、condrestartはただ再起動してるだけだ…