Mysqlサーバーが稼働しているかどうかを監視しようとしています。これに使用しているコマンドは次のとおりです。
mysqladmin ping
次を返します。
mysqld is alive
これは、プロセスが現在実行されているかどうかを確認するだけですか、それともサーバーが接続を受け入れているかどうかも確認しますか?
「mysqladminping」は、選択したMySQLサーバーへの接続を試みます。実際のサーバーは、-hオプション(例:mysqladmin ping -h db.example.com)で指定でき、デフォルトはlocalhostです。
サーバーが応答した場合(アクセスが拒否された、または同様のメッセージが表示された場合でも)、サーバーは稼働していると見なされ、「mysqladminping」はコード0で終了します。
それ以外の場合、サーバーはダウンしていると見なされ、コード1で「mysqladminping」が存在します。
MySQLサーバーが稼働していることを確認したい場合は、実行する小さなスクリプトを作成するのが最善の方法です。
SELECT "1";
接続するためのユーザーには、少なくともUSAGE権限が必要です。これでは、データベーステーブルに問題があるかどうかはわかりませんが、アプリケーションの監視でおそらく問題がわかります。
とにかく、これがmysqladminpingが行うことである可能性は十分にあります。
「アップ」は非常に広い用語です。例えば。 pingに応答する場合がありますが、実際にはディスクの空き容量がないか、すべてのクエリがブロックされるか、毎秒クラッシュして自動的に再起動します。または、すべてのテーブルが実際にクラッシュまたはさらに悪いものとしてマークされます。ドロップされたか、datadirがシステムからアンマウントされました。
または、狂ったようにスワッピングしている可能性があり、CPUが複数のクエリによって悪用されているため、クロールがほとんどできないため、確実に「アップ」しているわけではありません。
または例: pingに応答しない場合があります。接続制限のためですが、アプリケーションは持続的接続を使用し、完全に機能します。
または例: pingに応答しない場合があります。ローカルホストでのクライアントの問題が原因ですが、繰り返しになりますが、すべてのアプリケーションで実際に問題が発生するわけではありません。
したがって、「ping」が有効な答えである場合もありますが、「サーバーが稼働しているかどうかを監視する」ことを考えるときは、常にこれらのケースを考慮する必要があります。