Upstart:非upstartプロセスの後にサービスを開始します


11

Ubuntu 10.04では、mysqlが起動して実行されている場合にのみ、upstartでサービスを開始する必要があります。

問題は、mysql自体がupstartによって処理されないため、「start on」機能を使用できないことです。

私に何ができる ?

回答:


15

いくつかのオプションがあります:

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サービススクリプトへのリンクを再度追加すると、トラブルが発生することです。また、メインpidが起動してからしばらく時間が経過するまで、mysqlは実際には準備ができていない場合があります。データベースは、開始後(トランザクションログの再生など)でも「オンライン」になるまでに時間がかかるため、問題があります。

3)「停止したrcで開始」(つまり、すべてのSysVジョブが終了したと主張したときに開始)を実行し、mysqlが準備完了になるのを待って終了するupstartジョブ(「waiter」)を作成します。ジョブを「停止したウェイターで開始」してください。

4)mysqlをUpstartジョブに変換します(最適なオプション)。ここにupstart mysql設定の開始点があります:https : //github.com/devo-ps/init-scripts/tree/master/mysql/ubuntu


1
見て回った後、この答えは私が持っているすべてのオプションを要約しています。また、「mysqlの開始」とmysqlが実際に利用可能になる時間とのギャップを指摘していただきありがとうございます。#4が既にどこかで試されているかどうか見てみましょう。
ファルケン

オプション3では、「開始されたウェイターで開始」が必要です。停止していません。
adeandrade

オプション1はモデルによく適合します!まず、実行するpythonスクリプトを使用して構成サーバーからすべてのupstartスクリプトをダウンロードしてから、os.system('/sbin/initctl emit consul-finished')他のサービスを開始しますstart on consul-finished
CMag

それをありがとう、私の友人!基本的に、私はinitctl emit cloud-init-finishedフックアップするためにsysvサービスをsed-replace する必要がありました
ホセ・アルバン

0

すべての非スタートアップジョブが終了した後に、あなたのスタートアップジョブを開始することをお勧めします。

start on started rc

/etc/init/rc.conf upstart内から非upstartジョブを開始するものです。

小道具:https : //serverfault.com/a/533481


-1

使い方はどうですか

pre-start exec /etc/init.d/mysql start

あなたのスタートアップの仕事の中で!


... mysqlの起動時にupstartジョブを魔法のように起動しません。
アダプター

ええ、それはあなたが尋ねたものではありません!!! あなたは他の方法を求めました。少なくとも、それは私が理解する方法である

私のスタートアップジョブはmysqlを監視し、ダウンした場合に通知を送信することになっています。監視ジョブを介してmysqlを起動するのは少し違和感があります
ファルケン

完全に間違っているとは思わない。私は次のようなことをします:pre-start script if!/etc/init.d/rabbitmq-server status&> / dev / null; 次に/etc/init.d/rabbitmq-server start fi endスクリプト
-maxadamo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.