Ubuntu 10.04では、mysqlが稼働している場合にのみ、サービスをupstartで開始する必要があります。
問題は、mysql自体がupstartによって処理されないため、「開始」機能を使用できないことです。
私に何ができる ?
いくつかのオプションがあります。
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が開始されてからしばらくafterするまで実際には準備ができていない場合があります。データベースは、開始後(トランザクションログの再生など)でも「オンライン」になるまでに時間がかかる場合があるため、問題があります。
3)「停止したrcで開始」(つまり、すべてのSysVジョブが完了したと主張したときに開始)するアップスタートジョブ(「ウェイター」)を作成し、mysqlの準備ができるまで待機してポーリングし、終了します。あなたの仕事を「停止したウェイターから始める」ようにしてください。
4)mysqlをUpstartジョブに変換します(最良のオプション)。ここにupstart mysql設定の開始点があります: https://github.com/devo-ps/init-scripts/tree/master/mysql/ubunt
all非アップスタートジョブが終了した後で、アップスタートジョブを開始することをお勧めします。
start on started rc
/etc/init/rc.conf
は、upstart内から非upstartジョブを開始するものです。