いくつかのオプションがあります:
1) mysql に Upstart にイベントを発行して開始したことを通知させる
initctl emit mysql-started
これは initctl
を追加することで処理できます /etc/init.d/mysql
への呼び出し .
2) 通常の SysV ランレベルから mysql を無効にし、それを開始するラッパー Upstart ジョブを作成します (これは停止を処理しません - 単なる例です):
cat >>/etc/init/mysql-sysv.conf<<EOT
# wait for SysV job to finish
start on stopped rc
exec /etc/init.d/mysql start
EOT
次に、ジョブを「start on started mysql-sysv
」にします ".
ここでの問題は、誰か (または何らかのシステム ツールが自動的に) を再度 /etc/rc?.d
に追加すると、問題が発生することです。 元の /etc/init.d/mysql
へのリンク サービススクリプト。また、mysql は 後 しばらく待つまで実際には準備ができていないことに気付くかもしれません。 メインpidが開始されました。データベースは、開始後も「オンライン」になるまでに時間がかかる場合があるため、問題があります (トランザクション ログの再生など)。
3) 「停止した rc で開始」(つまり、すべての SysV ジョブが終了したと主張したときに開始) する upstart ジョブ (「ウェイター」) を作成し、mysql の準備が整うのを待ってポーリングし、終了します。あなたの仕事を「停止したウェイターで開始」してください。
4) mysql を Upstart ジョブに変換します (最良のオプション)。アップスタートの mysql 構成の開始点がここにあります:https://github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu